ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

8.1.2 EJBCallFactoryを使った呼び出し

EJBCallFactoryを使った呼び出しは、以下の手順で行います。

  1. DispatchContextクラスからEJBCallFactoryクラスのオブジェクトを取得します。

  2. EJBCallFactoryクラスのcreateUjiSessionCallメソッドを呼び出し、セションBeanの名前を指定してUjiSessionCallクラスのオブジェクトを取得します。指定する名前はJNDIで検索する名前です。この操作で取得されるUjiSessionCallは、セションBeanにアクセスするためのクラスです。このクラスのオブジェクトが作成されると同時に、EJBコンテナ上にセションBeanのオブジェクトが作成されます。

  3. UjiSessionCallクラスのinvokeメソッドでセションBeanを呼び出します。このとき、引数としてデータBeanとコマンド名を指定します。

記述例は以下のようになります。

import com.fujitsu.uji.ejb.EJBCallFactory;
import com.fujitsu.uji.ext.CallFactory;

public void someMethod(DispatchContext context, MyDataBean dataBean) {
  ...
  EJBCallFactory callFactory=(EJBCallFactory)context.getCallFactory(CallFactory.EJB);
  UjiSessionCall call=callFactory.createUjiSessionCall("java:comp/env/ejb/someSessionBean"); 
  ResponseBean response=(ResponseBean)call.invoke(dataBean,verb);
  ...
}

UjiSessionCallクラスのinvokeメソッドによってセションBeanのビジネスクラスが呼び出されます。ビジネスクラスのメソッドの第2引数に与えられるオブジェクトは次のとおりです。

また、invokeメソッドの返り値は次のとおりです。

データBean変換機能と上書き機能については“25.3 セションBeanとクライアントとの連携”を参照してください。

セションBeanの実行中に例外が発生し、それが呼び出し側に通知される例外の場合、invokeメソッドはcom.fujitsu.uji.ejb.EJBApplicationException例外を発生します。この例外のgetRootCauseメソッドによって、セションBeanで発生した例外を取得できます。 セションBeanからクライアントへの例外の通知については、“25.2.1 例外処理”を参照してください。

EJBCallFactoryのcreateUjiSessionCallメソッドで作成されたセションBeanオブジェクトは、ビジネスクラスを呼び出した処理が終了するときに自動的に削除されます。詳細は“8.4 セションBeanオブジェクトの自動削除”を参照してください。