リンケージ・プロパティー・ファイル
リンケージ・プロパティー・ファイル は、Java™ の実行時に使用されるテキスト・ファイルで、 リモート・プログラムを呼び出す方法の詳細を提供します。
- callLink 要素 type プロパティーの値に remoteCall または ejbCall を指定します。
- callLink 要素 remoteBind プロパティーの値に runtime を指定します。
リンケージ・プロパティー・ファイルは手書きしても構いませんが、(前述の設定に加えて) genProperties ビルド記述子オプションを GLOBAL または PROGRAM に設定して Java プログラムまたはラッパーを生成すると、EGL によってファイルが生成されます。
実行時のリンケージ・プロパティー・ファイルの識別
- Java プログラムは、cso.linkageOptions.LO Java ランタイム・プロパティーを検査します。
LO は生成に使用されるリンケージ・オプション・パーツの名前です。
プロパティーが存在しない場合、EGL ランタイム・コードは、LO.properties という名前のリンケージ・プロパティー・ファイルを検索します。繰り返しますが、LO は、生成で使用されるリンケージ・オプション・パーツ名です。
この場合、EGL ランタイム・コードがリンケージ・オプション・プロパティー・ファイルを検索して、それが見付からないと、リンケージ・オプション・プロパティー・ファイルの使用を要求する先頭の call 文でエラーが発生します。結果の詳細については、『例外処理』を参照してください。
- Java ラッパーは、callOptions 型のプログラム・オブジェクト変数 callOptions に、リンケージ・プロパティー・ファイルの名前を保存します。生成されるファイル名は LO.properties です。LO は生成で使用されるリンケージ・オプション・パーツ名です。
この場合、Java 仮想マシンがリンケージ・プロパティー・ファイルを検索しても、それが見付からないと、プログラム・オブジェクトは、CSOException 型の例外をスローします。
リンケージ・プロパティー・ファイルのデプロイ
リンケージ・プロパティー・ファイルは、そのファイルを使用する Java プログラムと同じプロジェクトに入っている必要があります。このファイルがアプリケーションのトップレベル・ディレクトリーに入っている場合は、cso.linkageOptions.LO Java ランタイム・プロパティーにこのファイル名を設定します (パス情報は省きます)。 このファイルがアプリケーションのトップレベル・ディレクトリーの下にある場合は、 トップレベル・ディレクトリーから始まるパスを使用し、 それぞれのレベルごとにスラッシュ (/) を組み込みます。 これは、アプリケーションが Windows プラットフォーム上で稼働する場合でも同様です。
J2EE プロジェクトを開発している場合、トップレベル・ディレクトリーは、 モジュールが常駐するプロジェクトの appClientModule、ejbModule、 または Web コンテンツ・ディレクトリーに対応します。 Java プロジェクトを開発している場合、トップレベル・ディレクトリーは、プロジェクト・ディレクトリーです。
リンケージ・プロパティー・ファイルの形式
実行時に使用するために、リンケージ・プロパティー・ファイルには、デプロイする生成済みの Java プログラムまたはラッパーからの各呼び出しを処理するための一連のエントリーが含まれます。
- remoteBind プロパティーは、必ず runtime であり、無視されます。
- type プロパティーを localCall にすることはできません。 ローカル呼び出しのリンケージは生成時に必ず確立されるからです。
cso.serverLinkage エントリー
cso.serverLinkage.programName.property=value
- programName
- ほとんどの場合、呼び出し先プログラムの名前です。呼び出し先プログラムが EGL によって生成された場合、指定した名前は、プログラム・パーツに固有の alias プロパティーの値ではなく、プログラム・パーツ名になります。call ステートメントに linkageKey プロパティーが含まれている場合、特殊なケースが該当します。以下に、call ステートメントの例を示します。
call "MyProgram01" {linkageKey = "MyProgram02"};この状態では、リンケージ・プロパティー・ファイル内の programName 修飾子を linkageKey 値に (この場合は MyProgram02 に) 設定します。
- property
- Java プログラムに適したプロパティー。ただし、remoteBind プロパティーと pgmName プロパティーは除きます。詳細については、『callLink 要素』を参照してください。 alias プロパティーには、externalName を使用します。 alias は使用しません。
- value
- 指定したプロパティーに対して有効な値。
cso.serverLinkage.Xyz.type=remoteCall
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.wildProgramName=appName
- wildProgramName
- 有効な名前、アスタリスク、または有効な名前の先頭の数文字とそれに続くアスタリスク。
アスタリスクは、1 つ以上の文字に相当するワイルドカードであり、一連の名前を指定できます。以下の 2 つの特殊なケースが該当します。
- linkageKey プロパティーが call ステートメント内にある場合、wildProgramName と突き合わせてテストされる値は linkageKey プロパティーの値です。
- linkageKey プロパティーが call ステートメント内になく、呼び出し先プログラムが EGL によって生成された場合、wildProgramName と突き合わせてテストされる値は、そのパーツの alias プロパティーの値ではなく、プログラム・パーツの名前です。
- appName
- EGL 命名規則に適合する一連の文字。appName の値は、コードの後半部分に記述する cso.serverLinkage エントリーに使用します。
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.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 では、適用される最初のエントリーが使用されます。
詳しくは、「EGL 言語解説書」の『命名規則』および『例外処理』を参照してください。