共通クライアント・インターフェース (CCI)

共通クライアント・インターフェース (CCI) を用いて IMS™ と 対話する IMS TM リソース・アダプターを使用するアプリケーションを作成することができます。

IMS TM リソース・アダプターを介して IMS トランザクションにアクセスするために、 開発環境により生成されたアプリケーション・コードを使用しないで、自分で アプリケーションのソース・コードを作成できます。 これは、Rational® Application Developer などの開発環境を使用してアプリケーションを自動的に 生成するのでコーディングの必要がない、という方法とは異なります。

自分でコードを作成するためには、アプリケーションが共通クライアント・インターフェース (CCI) プログラミング・インターフェースを使用している必要があります。CCI API は、 エンタープライズ Bean、JavaServer Pages (JSP) 技術、およびサーブレットなどの J2EE クライアントから、IMS のような バックエンド・エンタープライズ情報システム (EIS) へのアクセスを提供します。

CCI プログラミング・インターフェース・モデルに従うアプリケーションには、使用されている EIS に関係なく、共通の構造があります。J2EE Connector Architecture (JCA) 仕様は、アプリケーションに必要な次の 2 つのオブジェクトを定義します。 これらのオブジェクトによって、アプリケーション・サーバーは、リソース・アダプターのセキュリティー、 トランザクション・コンテキスト、および接続プールを管理することができます。IMS TM リソース・アダプターの CCI プログラミング・インターフェースを使用する アプリケーションは、IMSConnectionFactory オブジェクトを取得することにより、 開始されます。 この IMSConnectionFactory オブジェクトは次の 2 つの方法で取得できます。

IMS 接続

IMSConnection オブジェクトはその IMSConnectionFactory オブジェクトから作成できます。IMSConnection オブジェクトのプロパティーは、パラメーターとして getConnection メソッドに渡される IMSConnectionSpec オブジェクトで指定するか、または IMSConnectionFactory で定義されたデフォルト値が使用されます。IMSConnection が取得された後で、その IMSConnection から IMSInteraction を作成することができます。IMSInteraction はその接続で実行される対話を表します。 Connection と同様、Interactions も IMSInteractionSpec クラスからカスタム・プロパティーを継承することができます。

入出力

Interaction を実行するために、アプリケーションは IMSInteraction オブジェクトの execute() メソッドを呼び出し、データを格納する入出力オブジェクトにこれを渡します。 IMS への 入力メッセージの各フィールドに、値を含む入力 Byte 配列を作成する必要があります。 同様に、IMS により 戻される応答メッセージを格納するための出力 Byte 配列も作成する必要があります。 出力メッセージの各フィールドの値は、出力 Byte 配列から抽出されます。

自分で入出力 Byte 配列 を作成するか、もしくはアプリケーション開発に RAD を使用する予定がない場合でも Rational Application Developer (RAD) の J2C オプションを使用して、CCI アプリケーションの 入出力メッセージ用の Java™ データ・バインディングを作成することができます。

IMS システムから データを取り出すアプリケーションの要件:
  • IMSConnectionFactory オブジェクトを使用して IMSConnection オブジェクトを作成します。
  • IMSConnection オブジェクトを使用して IMSInteraction オブジェクトを作成します。
  • IMSInteraction オブジェクトを使用して、バックエンド IMS システムで トランザクションを実行します。
  • IMSInteraction オブジェクトおよび IMSConnection オブジェクトを閉じます。

CCI アプリケーションのサンプル・コード

次の例では、J2EE CCI インターフェースを使用して、 EIS でコマンドを実行しています。
public void execute() {
try {
   ConnectionFactory cf = null;
   if (isManaged) {
//Use JNDI lookup to get ConnectionFactory instance - assumes connection factory has JNDI name of MyIMS
      Context ic = new InitialContext();
      cf = (ConnectionFactory) ic.lookup("MyIMS");
   } else {
//Create and set values for ManagedConnectionFactory
      IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory();
      mcf.setDataStoreName("MyDSName");
      mcf.setHostName("myHostNm");
      mcf.setPortNumber(new Integer(1234));
//Create connection factory from ManagedConnectionFactory
      cf = (IMSConnectionFactory) mcf.createConnectionFactory();
   }
   Connection connection = cf.getConnection();

//Create interaction with IMS to run IVTNO transaction
   IMSInteraction interaction = (IMSInteraction) connection.createInteraction();
   IMSInteractionSpec ixnSpec = new IMSInteractionSpec();
   ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE);

//Create new input record 
   input = new PhoneBookInputRecordField("cp037");
   input.setIn__ll((short)59);
   input.setIn__zz((short) 0);
   input.setIn__trcd("IVTNO");
   input.setTranCodeLength(10);
   input.setIn__command("DISPLAY");
   input.setIn__name1("LAST3");
   				input.setIn__name2("");
   input.setAllFieldsGiven(false);
   PhoneBookOutputRecordField

//Create new output record 
   output = new PhoneBookOutputRecordField("cp037");

//Execute interaction
   interaction.execute(ixnSpec, input, output);

//Display output
   System.out.println ("Output is: ");
   System.out.println("¥nMessage: "
      + output.getOut__mesg()
      + "¥nName:"
      + output.getOut__name1()
      + " "
      + output.getOut__name2()
      + "¥nExtension: "
      + output.getOut__extn()
      + "¥nZipcode: "
      + output.getOut__zip());

} catch (Exception e) {
   e.printStackTrace();
} finally {
//Close both the interaction and the connection
   interaction.close();
   connection.close();
}
}

フィードバック