IMS TM リソース・アダプターを介して IMS トランザクションにアクセスするために、 開発環境により生成されたアプリケーション・コードを使用しないで、自分で アプリケーションのソース・コードを作成できます。 これは、Rational® Application Developer などの開発環境を使用してアプリケーションを自動的に 生成するのでコーディングの必要がない、という方法とは異なります。
自分でコードを作成するためには、アプリケーションが共通クライアント・インターフェース (CCI) プログラミング・インターフェースを使用している必要があります。CCI API は、 エンタープライズ Bean、JavaServer Pages (JSP) 技術、およびサーブレットなどの J2EE クライアントから、IMS のような バックエンド・エンタープライズ情報システム (EIS) へのアクセスを提供します。
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™ データ・バインディングを作成することができます。
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(); } }