リモート・セッション Bean へのアクセス

アプリケーションは、Bean のホーム・ インターフェースを介して、適切なリモート・セッション Bean にアクセスします。

このタスクを実行する理由と時期

セッション Bean は、プロセス・ アプリケーションに対しては BusinessFlowManager セッション Bean、タスク・アプリケーションに対しては HumanTaskManager セッション Bean のいずれかである可能性 があります。

このタスクのステップ

  1. リモート・セッション Bean への参照を アプリケーション・デプロイメント記述子に追加します。 参照を以下のファイルの 1 つに追加します。
    • Java™ 2 Platform Enterprise Edition (J2EE) クライアント・アプリケーションの場合は、application-client.xml ファイル
    • Web アプリケーションの場合は、web.xml ファイル
    • Enterprise JavaBeans™ (EJB) アプリケーションの 場合は、ejb-jar.xml ファイル
    プロセス・アプリケーションの場合のリモート ・ホーム・インターフェースへの参照は、以下の例で 示されます。
    <ejb-ref>
     <ejb-ref-name>ejb/BusinessFlowManagerHome</ejb-ref-name>
     <ejb-ref-type>Session</ejb-ref-type>
     <home>com.ibm.bpe.api.BusinessFlowManagerHome</home>
     <remote>com.ibm.bpe.api.BusinessFlowManager</remote>
    </ejb-ref>
    タスク・ アプリケーションの場合のリモート・ホーム・ インターフェースへの参照は、以下の例で示されます。
    <ejb-ref>
     <ejb-ref-name>ejb/HumanTaskManagerHome</ejb-ref-name>
     <ejb-ref-type>Session</ejb-ref-type>
     <home>com.ibm.task.api.HumanTaskManagerHome</home>
     <remote>com.ibm.task.api.HumanTaskManager</remote>
    </ejb-ref>

    WebSphere® Integration Developer を使用して EJB 参照を デプロイメント記述子に追加する場合、EJB 参照のバインディングが、アプリケーションのデプロイ時に 自動的に作成されます。EJB 参照の追加について 詳しくは、WebSphere Integration Developer の文書を 参照してください。

  2. 生成されたスタブをアプリケーションに パッケージします。

    ご使用の アプリケーションが、BPEContainer アプリケーションまたは TaskContainer アプリケーションを実行しているのと 異なる Java 仮想マシン (JVM) で実行されている場合、 以下のアクションを完了します。

    1. プロセス・アプリケーションの場合、<install_root>/ProcessChoreographer/client/bpe137650.jar ファイルを、ご使用の アプリケーションのエンタープライズ・アーカイブ (EAR) ファイルにパッケージします。
    2. タスク・アプリケーションの場合、<install_root>/ProcessChoreographer/client/task137650.jar ファイルを、ご使用のアプリケーションの EAR ファイルにパッケージします。
    3. アプリケーション・モジュールの マニフェスト・ファイル内の Class-Path パラメーターを、JAR ファイルを含めるように設定します。 アプリケーション・モジュールは、J2EE アプリケーション、Web アプリケーション、または EJB アプリケーションの可能性があります。
  3. Java Naming and Directory Interface (JNDI) 検索機構を使用して、セッション Bean のホーム・ インターフェースがアプリケーションから使用可能になるようにします。 以下の例では、プロセス・アプリケーションでのこのステップを示します。
    // Obtain the default initial JNDI context
    InitialContext initialContext = new InitialContext();
    
      // Lookup the remote home interface of the BusinessFlowManager bean
      Object result =
             initialContext.lookup("java:comp/env/ejb/BusinessFlowManagerHome");
    
    // Convert the lookup result to the proper type
       BusinessFlowManagerHome processHome =
               (BusinessFlowManagerHome)javax.rmi.PortableRemoteObject.narrow
               (result,BusinessFlowManagerHome.class);
    セッション Bean のホーム・ インターフェースには、EJB オブジェクトの create メソッドが含まれます。 このメソッドは、セッション Bean のリモート・ インターフェースを戻します。
  4. セッション Bean のリモート・ インターフェースにアクセスします。 以下の例では、プロセス・アプリケーションでのこのステップを示します。
    BusinessFlowManager process = processHome.create();
  5. サービス・インターフェースによって 公開されたビジネス関数を呼び出します。 以下の例では、プロセス・アプリケーションでのこのステップを示します。
    process.initiate("MyProcessModel",input);
    アプリケーションからの呼び出しは、 トランザクションとして実行されます。 トランザクションは、以下のいずれかの方法で確立され て終了します。
    • WebSphere Application Server から自動的に (デプロイメント記述子が TX_REQUIRED を指定)。
    • アプリケーションから明示的に。 アプリケーションの呼び出しを 1 つのトランザクション にバンドルすることができます。
      // Obtain user transaction interface
         UserTransaction transaction=
             (UserTransaction)initialContext.lookup("jta/usertransaction");
      
         // Begin a transaction
         transaction.begin();
      
           // Applications calls ...
      
         // On successful return, commit the transaction
         transaction.commit();
以下に、ステップ 3 から 5 でタスク・アプリケーションを探す方法の例を示します。
// Obtain the default initial JNDI context
InitialContext initialContext = new InitialContext();

  // Lookup the remote home interface of the HumanTaskManager bean
  Object result =
         initialContext.lookup("java:comp/env/ejb/HumanTaskManagerHome");

// Convert the lookup result to the proper type
   HumanTaskManagerHome taskHome =
           (HumanTaskManagerHome)javax.rmi.PortableRemoteObject.narrow
           (result,HumanTaskManagerHome.class);

...
//Access the remote interface of the session bean.
HumanTaskManager task = taskHome.create();

...
//Call the business functions exposed by the service interface
task.callTask(tkiid,input);

ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
本製品では Eclipse テクノロジーが採用されています。(http://www.eclipse.org)