CICS® Transaction
Gateway は、CICS と相互作用するための共通クライアント・インターフェース (CCI) をインプリメントするリソース・アダプターを提供します。
共通クライアント・インターフェース
CCI は、JCA によって定義されたハイレベル・インターフェースで、外部呼び出しインターフェース (ECI) を使用して CICS サーバー上で通信する J2EE 開発者による使用が可能です。
CCI には、異なる 2 つのクラス・タイプがあります。
- 汎用 CCI クラス: 汎用 CCI クラスは、CICS などの EIS への接続を要求し、入力の送信および出力の取得を行いその EIS 上でコマンドを実行するために使用します。これらのクラスは汎用であり、特定の EIS 固有の情報の送信は行ないません。「接続」および ConnectionFactory は、汎用 CCI クラスの例です。
- CICS 特定 CCI クラス: CICS 特定クラスは、Java™ クライアント・アプリケーションおよび CICS 間で特定の情報を送信するために使用します。CICS 特定クラスの例には、以下があります。
CCI を使用したプログラミング・インターフェース・モデルに従うアプリケーションには、共通の構造があり、使用中の EIS からは独立してます。JCA は、EIS への接続を表す「接続」および ConnectionFactory を定義します。
これらのオブジェクトにより、アプリケーション・サーバーは、セキュリティー、トランザクション・コンテキスト、およびリソース・アダプターの接続プールを管理することができます。
アプリケーションは、「接続」を取得できる ConnectionFactory を取得することよって開始されなければなりません。この「接続」のプロパティーは ConnectionSpec オブジェクトによってオーバーライドされる可能性があります。
ConnectionSpec クラスは、ECIConnectionSpec のように CICS 特定です。
接続を取得すると、特定の要求を作成するため、「接続」から「相互作用」を作成することができます。
「接続」と同様に、「相互作用」は、CICS 特定 InteractionSpec クラス (ECIInteractionSpec) によって設定されたカスタム・プロパティーを持つことができます。
「相互作用」を実行するため、アプリケーションは execute() メソッドを呼び出し、CICS 特定のレコード・オブジェクトを使用してデータを保持します。
- 接続ファクトリー: ConnectionFactory は、以下の 2 つの方法で取得します。
- 管理: アプリケーション・サーバーを使用している場合は、通常、管理インターフェースによってリソース・アダプターから、ConnectionFactory が作成されます。この ConnectionFactory には、カスタム・プロパティーが設定されています。例えば、使用されるゲートウェイは、ConnectionURL と設定されています。ConnectionFactory が作成されると、JNDI からどのエンタープライズ・アプリケーションでも使用可能にすることができます。このタイプの環境を、管理対象環境と呼びます。管理対象環境では、アプリケーション・サーバーが接続のサービスの品質を管理することができます。
- 管理外: アプリケーション・サーバーを使用していない場合は、ManagedConnectionFactory を作成して、そのカスタム・プロパティーを設定する必要があります。その後で、ManagedConnectionFactory から ConnectionFactory を作成することができます。このタイプの環境を、管理外環境と呼びます。管理外環境では、アプリケーション・サーバーによる接続の管理はできません。
CICS サーバーからデータを取得するには、ご使用の J2EE アプリケーションが以下を行ないます。
- ConnectionFactory オブジェクトを使用して接続オブジェクトを作成する。
- 接続オブジェクトを使用して、相互作用オブジェクトを作成する。
- 相互作用オブジェクトを使用して、EIS 上でコマンドを実行する。
- 「相互作用」および「接続」を閉じる。
以下の例は、J2EE CCI インターフェースを使用した EIS 上でのコマンドの実行を示しています。
ConnectionFactory cf = [Lookup from JNDI namespace]
Connection conn = cf.getConnection();
Interaction int = conn.createInteraction();
int.execute([Input output data]);
int.close();
conn.close();