リンケージ・プロパティー・ファイル (詳細)

呼び出し側の Java™ プログラムまたはラッパーを生成する場合は、実行時にリンケージ情報が必要であるという要求を指定できます。この指定を行うには、呼び出し先プログラムのリンケージ・オプションの値を次のように設定します。

リンケージ・プロパティー・ファイルは手書きしても構いませんが、前述した設定に加えて、ビルド記述子オプション genProperties に GLOBAL または PROGRAM を指定して Java プログラムまたはラッパーを生成すると、EGL によってファイルが生成されます。

実行時のリンケージ・プロパティー・ファイルの識別

リンケージ・オプション・パーツ内で、呼び出し先プログラムの callLink エレメントのプロパティー remoteBind に RUNTIME を設定した場合、リンケージ・プロパティー・ファイルは実行時に検索されますが、ファイル名のソースは、Java プログラムと Java ラッパーとで異なります。
  • Java プログラムは、Java ランタイム・プロパティー cso.linkageOptions.LO を検査します。ここで、LO は、生成で使用されるリンケージ・オプション・パーツ名です。プロパティーが存在しない場合、EGL ランタイム・コードは、LO.properties という名前のリンケージ・プロパティー・ファイルを検索します。繰り返しますが、LO は、生成で使用されるリンケージ・オプション・パーツ名です。

    この場合、EGL ランタイム・コードがリンケージ・オプション・プロパティー・ファイルを検索しても、それが見付からないと、リンケージ・オプション・プロパティー・ファイルの使用を要求する先頭の call 文でエラーが発生します。結果の詳細については、『例外処理』を参照してください。

  • Java ラッパーは、callOptions 型のプログラム・オブジェクト変数 callOptions に、リンケージ・プロパティー・ファイルの名前を保管します。生成されるファイル名は、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 プログラムに適したプロパティー。ただし、remoteBind プロパティーと pgmName プロパティーは除きます。詳細については、『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 エントリーを作成する場合は、これらのエントリーを 1 つ以上の cso.application 型のエントリーの前に置きます。この場合の目的は、複数のプログラム名を 1 つのアプリケーション名で代用することです。コード後半部分に記述する cso.serverLinkage エントリーでは、programName の代わりにアプリケーション名を使用します。こうすると、前述の cso.serverLinkage エントリーによって、Java ランタイムで複数のプログラムへの呼び出しが処理されます。

cso.application エントリーのフォーマットは次のとおりです。
  cso.application.wildProgramName.appName
wildProgramName
有効なプログラム名、アスタリスク、または有効なプログラム名の先頭の数文字とそれに続くアスタリスク。アスタリスクは、1 つ以上の文字に相当するワイルドカードであり、一連の名前を指定できます。

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

1 つのプログラムに対して複数の cso.application エントリーが有効な場合、EGL では、適用される最初のエントリーが使用されます。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.