EJB クライアント・アプリケーションは、Bean のホーム・
インターフェースを介して、適切なローカル・セッション Bean にアクセスします。
このタスクを実行する理由と実行時期
セッション Bean は、プロセス・
アプリケーションの場合は LocalBusinessFlowManager
セッション Bean、ヒューマン・タスク・アプリケーションの場合は
LocalHumanTaskManager セッション Bean になります。
このタスクのステップ
- ローカル・セッション Bean への参照を
アプリケーション・デプロイメント記述子に追加します。 参照を以下のファイルの 1 つに追加します。
- Java™ 2 Platform Enterprise Edition (J2EE)
クライアント・アプリケーションの場合は、application-client.xml ファイル
- Web アプリケーションの場合は、web.xml
ファイル
- Enterprise JavaBeans™ (EJB) アプリケーションの
場合は、ejb-jar.xml ファイル
プロセス・アプリケーションの場合のローカル
・ホーム・インターフェースへの参照は、以下の例で
示されます。
<ejb-local-ref>
<ejb-ref-name>ejb/LocalBusinessFlowManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.bpe.api.LocalBusinessFlowManagerHome</local-home>
<local>com.ibm.bpe.api.LocalBusinessFlowManager</local>
</ejb-local-ref>
タスク・
アプリケーションの場合のローカル・ホーム・
インターフェースへの参照は、以下の例で示されます。
<ejb-local-ref>
<ejb-ref-name>ejb/LocalHumanTaskManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.task.api.LocalHumanTaskManagerHome</local-home>
<local>com.ibm.task.api.LocalHumanTaskManager</local>
</ejb-local-ref>
WebSphere® Integration Developer を使用して EJB 参照を
デプロイメント記述子に追加する場合、EJB 参照のバインディングが、アプリケーションのデプロイ時に
自動的に作成されます。EJB 参照の追加について
詳しくは、WebSphere Integration Developer の文書を
参照してください。
- Java Naming and Directory Interface (JNDI) からローカル・セッション Bean のローカル・ホーム・インターフェースへの参照を取得します。
以下の例では、プロセス・アプリケーションでのこのステップを示します。
// Obtain the default initial JNDI context
InitialContext initialContext = new InitialContext();
// Lookup the local home interface of the LocalBusinessFlowManager bean
LocalBusinessFlowManagerHome processHome =
(LocalBusinessFlowManagerHome)initialContext.lookup
("java:comp/env/ejb/LocalBusinessFlowManagerHome");
ローカル・セッション Bean のホーム・インターフェースには、EJB オブジェクト
の create メソッドが含まれます。
このメソッドは、セッション Bean のローカル・
インターフェースを戻します。
- ローカル・セッション Bean のローカル・
インターフェースにアクセスします。
以下の例では、プロセス・アプリケーションでのこのステップを示します。
LocalBusinessFlowManager process = processHome.create();
セッション Bean へのアクセス権は、
呼び出し元が Bean が提供するすべてのアクションを実行できることを保証するものではありません。
呼び出し元には、そのアクションに対する許可も必要になります。
セッション Bean のインスタンスを作成すると、
コンテキストとそのセッション Bean のインスタンスが関連付けられます。コンテキストには呼び出し元のプリンシパル ID、グループ・メンバーシップ・リストが含まれ、その呼び出し元に Business Process Choreographer の J2EE ロールのいずれかがあるかどうかを示します。
コンテキストは、グローバル・セキュリティーが設定されていなくても、それぞれの呼び出しごとに、
呼び出し元の権限を確認するために使用されます。グローバル・セキュリティーが設定されていない場合、
呼び出し元のプリンシパル ID の値は UNAUTHENTICATED になります。
- サービス・インターフェースによって
公開されたビジネス関数を呼び出します。
以下の例では、プロセス・アプリケーションでのこのステップを示します。
process.initiate("MyProcessModel",input);
アプリケーションからの呼び出し
は、トランザクションとして実行されます。
トランザクションは、以下のいずれかの方法で確立
されて終了します。
ヒント: データベース・デッドロックを防ぐには、並列トランザクションで以下のようなステートメントの実行を避けるようにします。
// Obtain user transaction interface
UserTransaction transaction=
(UserTransaction)initialContext.lookup("jta/usertransaction");
transaction.begin();
//read lock on the activity instance
process.getActivityInstance(aiid);
//write lock on the activity instance
process.claim(aiid);
transaction.commit();
例
以下に、ステップ 2 から 4 でタスク・アプリケーションを探す方法の例を示します。
// Obtain the default initial JNDI context
InitialContext initialContext = new InitialContext();
// Lookup the local home interface of the LocalHumanTaskManager bean
LocalHumanTaskManagerHome taskHome =
(LocalHumanTaskManagerHome)initialContext.lookup
("java:comp/env/ejb/LocalHumanTaskManagerHome");
...
//Access the local interface of the local session bean
LocalHumanTaskManager task = taskHome.create();
...
//Call the business functions exposed by the service interface
task.callTask(tkiid,input);