EJB コンテナーでの統合オブジェクトの使用 (独自の EJB から)

このセクションの説明では、統合オブジェクトのメソッドに言及します。このメソッドについては、統合オブジェクトのメソッドを参照してください。

統合オブジェクトを実行する独自の EJB プロジェクトを作成できます。ここでは、ZIETrans プロジェクトから別の EJB プロジェクトへファイルを移動し、統合オブジェクトを実行するようにそのファイルを設定する手順を示します。この手順を実行すると、1 つ以上の統合オブジェクトを個別にエクスポートして使用することができます。統合オブジェクトのチェーンを使用する場合は、以降の説明に従ってすべてのファイルをコピーし、統合オブジェクトが正しい順序で実行されるようにする必要があります。

注:
  1. チェーニングされた統合オブジェクトを使用する場合は、ステートフル EJB プロジェクトを使用します。また、EJB プロジェクトで ZIETrans セッション鍵 (hPubLinkKey) を管理する必要があります。詳しくは、『統合オブジェクト・チェーニング』を参照してください。
  2. チェーニングされた統合オブジェクトを使用しない場合は、ステートレス EJB プロジェクトを使用します。
  3. WebSphere® アプリケーション・サーバー クラスターで実行する場合は、EJB コンテナーがセッションの親和性を処理します。

ZIETrans 保守は、個別の EJB プロジェクトでデプロイされる統合オブジェクトには適用されません。このように使用される統合オブジェクトに保守を適用する最良の方法は、ZIETrans プロジェクトで統合オブジェクトを更新してから、次の手順に従ってそれらを再エクスポートすることです。また、ZIETrans ランタイム .jar ファイルを ZIETrans EAR からプロジェクトへエクスポートする場合は、ZIETrans 保守を適用する際にそれらを再エクスポートする必要があります。

  1. カスタム EJB プロジェクトを作成します (「ファイル」>「新規」>「プロジェクト」>「EJB プロジェクト」)。この例では、プロジェクトは My_EJB として参照されています。application.hap ファイルを EJB プロジェクトの ejbModule フォルダーにコピーします。
  2. EJB プロジェクトの ejbModule フォルダーで、connections という名前のフォルダーを作成します (「ファイル」>「新規」>「その他」を選択し、「シンプル」を展開し、「フォルダー」を選択します)。統合オブジェクトが使用する接続を定義する .hco ファイルをこのフォルダーにコピーします。
  3. EJB プロジェクトの ejbModule フォルダーで、macros というフォルダーを作成します。接続で必要な接続マクロや切断マクロ、および統合オブジェクトが使用するマクロを定義する .hma ファイル をこのフォルダーにコピーします。
  4. EJB プロジェクトの ejbModule フォルダーで、IntegrationObject というフォルダーを作成します。統合オブジェクト・ファイル (*.java および *BeanInfo.java) をこのフォルダーにコピーします。この時点で、次のファイルがそろっているはずです。
    ejbModule\application.hap
    ejbModule\connections\ioconn.hco
    ejbModule\macros\*.hma
    ejbModule\IntegrationObject\*.java
  5. ZIETrans EAR ファイルに含まれているすべての jar ファイルを、独自の EAR ファイルまたは EJB プロジェクトの ejbModule ディレクトリーへ移動することによって、EJB プロジェクトのクラスパスに追加します。
  6. jar ファイルを追加したディレクトリーと同じディレクトリーに runtime.properties ファイルをコピーします。ログ・ディレクトリーの場所は、runtime.properties ファイルと同じディレクトリーになります。
    注: プロジェクトをローカル・テスト環境でテストする場合は、runtime-debug.properties ファイルもコピーします。
  7. EJB プロジェクトの ejbModule\META-INF フォルダーで、MANIFEST.MF ファイルを編集し、すべての ZIETrans ランタイム jar ファイルを依存関係リストに追加します。
  8. これらの呼び出しをコードに追加して、ZIETrans ランタイムを開始します。
    // obj is the EJB object reference, 
    // e.g., com.ibm.hats.util.Ras.initializeRas(this);
    	com.ibm.hats.util.Ras.initializeRas(obj);  
    	com.ibm.hats.util.LicenseManager.getInstance();         
     // appName is a String representing the EJB project 
     // and obj is the EJB object reference
     // e.g. com.ibm.hats.runtime.Runtime.initRuntime(My_EJB, this);	
    	com.ibm.hats.runtime.connmgr.Runtime.initRuntime(appName, obj); 

カスタム EJB から統合オブジェクトを使用するには、次の手順を実行します。

  1. コンストラクターを呼び出して、統合オブジェクトのインスタンスを作成します。
  2. setter メソッドを呼び出して、入力変数のプロパティーを設定します。setter メソッドの命名規則は次のとおりです。
    void setXyz(String)
    ここで、Xyz は入力変数の名前です。
  3. プール名を、統合オブジェクトが使用する接続プールの名前に 設定します。接続名は、EJB プロジェクトの名前で修飾する必要があります。例:
    void setHPubStartPoolName("My_EJB/main"); 
    ここで、My_EJB は EJB プロジェクトの名前、main は統合オブジェクトの接続プールの名前です。
  4. 次のメソッドを使用して統合オブジェクトを呼び出し、所定のタスク (例えば、マクロの実行) を実行します。
    void processRequest() throws BeanException

    統合オブジェクトにエラーがある場合、processRequest() メソッドは 例外 (タイプ com.ibm.HostPublisher.IntegrationObject.BeanException) をスローします。

    入力変数をリセットして、processRequest() メソッドを複数回、呼び出すことができます。エラー表示と結果の値は、呼び出しごとにリセットされます。

  5. 次のメソッドを呼び出して、エラーがないか検査します。
    int getHPubErrorOccurred()
    結果がゼロ以外である場合は、エラーが発生しています。エラー例外が示されます。エラーの特定の例外を取得するには、次のメソッドを呼び出します。
    Exception getHPubErrorException()
    例外オブジェクトで getMessage() を呼び出すことによって、エラー・メッセージを取得できます。メッセージは「ZIETrans メッセージ」に記載されています。最初の 7 文字は HATxxxx または HPSxxxx に設定されています。ここで、xxxx はメッセージ番号です。
  6. 統合オブジェクトからの結果を要求します。
    • 次のメソッドのいずれかを呼び出して、出力変数の値を検索します。
      • 単純なテキスト
        String getAbc()
        ここで、Abc は出力変数の名前です。
      • テーブル
        • 結果の列全体を取得するには、次のメソッドを呼び出します。
          String[] getAbc()
          ここで、Abc は出力変数の名前です。
        • 結果の列から単一値を取得するには、次のメソッドを呼び出します。
          String getAbc(int) throws ArrayIndexOutOfBoundsException
          ここで、Abc は出力変数の名前で、int は必要な値の索引です。この手順を配列で繰り返していくと、配列の終わりに達したときに、メソッドによって ArrayIndexOutOfBoundsException 例外がスローされます。
    • 次のメソッドを呼び出すと、統合オブジェクトの作成に使用したアプリケーションに関係なく、出力データを XML 形式で取り出すことができます。
      String getHPubXMLProperties()
      これは、統合オブジェクトのプロパティーと値を XML 形式のストリングとして戻します。
    必要に応じて値を取り出せるよう、すべての統合オブジェクトの入力変数に、各 setter メソッドに対応する getter メソッドが含まれています。これらのメソッドのシグニチャーは次のようになります。
    void getXyz(String)
    ここで、Xyz は入力変数の名前です。

    入力したデータから生成される入力変数名または出力変数名が不確実の場合は、統合オブジェクトの BeanInfo .java ソース・ファイル内で定義されたプロパティーを参照します。統合オブジェクトの BeanInfo .java ソース・ファイルは、IntegrationObject パッケージ内のプロジェクトのソース・フォルダーにあります。BeanInfo が表示されるのは「ナビゲーター」ビューだけです。