链接属性文件(详细信息)

当生成调用 Java™ 程序或包装器时,可指定在运行时需要链接信息。通过将被调用程序的链接选项值设置为下面的值来作出说明:

链接属性文件可能是手写的,但如果(除了之前描述的设置之外)生成 Java 程序或包装器时将构建描述符选项 genProperties 设置为 GLOBAL 或 PROGRAM,EGL 将生成一个文件。

如果在运行时标识链接属性文件

如果在链接选项部件中将被调用程序的 callLink 元素属性 remoteBind 设置为 RUNTIME,则将在运行时寻找链接属性文件;但是,对于 Java 程序和 Java 包装器,文件名的源是不同的:
  • Java 程序检查 Java 运行时属性 cso.linkageOptions.LO,其中 LO 是用于生成的链接选项部件的名称。如果该属性不存在,则 EGL 运行时代码将寻找名为 LO.properties 的链接属性文件。同样,LO 是用于生成的链接选项部件的名称。

    在这种情况下,如果 EGL 运行时代码寻找链接属性文件但又找不到该文件,则将在需要使用该文件的第一个 call 语句上发生错误。有关结果的详细信息,请参阅“异常处理”。

  • Java 包装器将链接属性文件的名称存储在程序对象变量 callOptions 中,其类型为 CSOCallOptions。生成的文件名为 LO.properties,其中 LO 是用于生成的链接选项的名称。

    在这种情况下,如果 Java 虚拟机寻找链接属性文件但又找不到该文件,则程序对象将抛出类型为 CSOException 的异常。

链接属性文件的格式

在运行时期间使用时,链接属性文件包括一系列条目,以处理来自正在部署的生成的 Java 程序或包装器的每个调用。

主条目的类型为 cso.serverLinkage,并且可以包括可以在链接选项部件的 callLink 元素中设置的任何属性值对,但是下列情况例外:
  • 属性 remoteBind 有必要是 RUNTIME,并且不应该出现
  • 属性 type 不能是 localCall,原因是必须在生成时建立本地调用的链接

cso.serverLinkage 条目

在最基本的情况下,链接属性文件中的每个条目的类型都是 cso.serverLinkage。条目的格式如下所示:
  cso.serverLinkage.programName.property=value
programName
被调用程序的名称。如果被调用程序是由 EGL 生成的,则您指定的名称是程序部件的名称。
property
适用于 Java 程序的任何属性,remoteBindpgmName 属性除外。有关详细信息,请参阅 callLink 元素
value
对指定的属性有效的值。
以下是被调用程序 Xyz 的一个示例,其中 xxx 表示一个区分大小写的字符串:
  cso.serverLinkage.Xyz.type=ejbCall
  cso.serverLinkage.Xyz.remoteComType=TCPIP
  cso.serverLinkage.Xyz.remotePgmType=EGL
  cso.serverLinkage.Xyz.externalName=xxx
  cso.serverLinkage.Xyz.package=xxx
  cso.serverLinkage.Xyz.conversionTable=xxx
  cso.serverLinkage.Xyz.location=xxx
  cso.serverLinkage.Xyz.serverID=xxx
  cso.serverLinkage.Xyz.parmForm=COMMDATA
  cso.serverLinkage.Xyz.providerURL=xxx
  cso.serverLinkage.Xyz.luwControl=CLIENT

文字值 TCPIP 和 EGL 等都是不区分大小写的,并且都是有效数据的示例。

cso.application 条目

如果要创建一系列 cso.serverLinkage 条目来表示若干个被调用程序中的任何程序,则在这些条目前面添加一个或多个类型为 cso.application 的条目。在此例中,主要目的是使单个应用程序名等于多个程序名。在后续的 cso.serverLinkage 条目中,使用应用程序名而不使用 programName;于是,在 Java运行时,那些 cso.serverLinkage 条目将处理对若干程序中的任何程序的调用。

cso.application 条目的格式如下所示:
  cso.application.wildProgramName.appName
wildProgramName
有效的程序名、星号或者以有效程序名开头并且后跟一个星号。星号是等同于一个或多个字符的通配符,它可以标识一组名称。

如果 wildProgramName 是指由 EGL 生成的程序,则 wildProgramName 中包括的任何程序名都是程序部件的名称。

appName
符合 EGL 命名约定的一系列字符。appName 的值用于后续 cso.serverLinkage 条目。
以下示例显示了将星号作为通配符字符的用法。此示例中的 cso.serverLinkage 条目处理对其名称以 Xyz 开头的程序的任何调用:
  cso.application.Xyz*=myApp
  cso.serverLinkage.myApp.type=remoteCall
  cso.serverLinkage.myApp.remoteComType=TCPIP
  cso.serverLinkage.myApp.remotePgmType=EGL
  cso.serverLinkage.myApp.externalName=xxx
  cso.serverLinkage.myApp.package=xxx
  cso.serverLinkage.myApp.conversionTable=xxx
  cso.serverLinkage.myApp.location=xxx
  cso.serverLinkage.myApp.serverID=xxx
  cso.serverLinkage.myApp.parmForm=COMMDATA
  cso.serverLinkage.myApp.luwControl=CLIENT
以下示例显示了如何使用同一个 cso.serverLinkage 条目来处理对若干程序中的任何程序的调用,即使这些程序的名称不以相同的字符开头:
  cso.application.Abc=myApp
  cso.application.Def=myApp
  cso.application.Xyz=myApp
  cso.serverLinkage.myApp.type=remoteCall
  cso.serverLinkage.myApp.remoteComType=TCPIP
  cso.serverLinkage.myApp.remotePgmType=EGL
  cso.serverLinkage.myApp.externalName=xxx
  cso.serverLinkage.myApp.package=xxx
  cso.serverLinkage.myApp.conversionTable=xxx
  cso.serverLinkage.myApp.location=xxx
  cso.serverLinkage.myApp.serverID=xxx
  cso.serverLinkage.myApp.parmForm=COMMDATA
  cso.serverLinkage.myApp.luwControl=CLIENT

如果有多个 cso.application 条目对于程序有效,则 EGL 使用第一个适用条目。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.