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

20.4.1 Apcoordinatorで作成したセションBeanの呼び出し

Apcoordinatorで作成したセションBeanは以下の2通りの方法で呼び出せます。

Apcoordinatorで作成したセションBeanを呼び出す場合は、以下の機能が利用できます。詳しくは“20.2.3 セションBeanとクライアントとの連携”を参照してください。

20.4.1.1 リモート共通インターフェイスを使った呼び出し

リモート共通インターフェイスの基本的な使用方法は“20.3 リモート共通インターフェイス”を参照してください。この節ではセションBeanの呼び出しの場合に固有の動作について説明します。

項目

セションBeanに固有の動作

CallFactoryインターフェイスのcreateCallメソッドの呼び出し

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

Callインターフェイスのinvokeメソッドの呼び出し

データBean変換機能を使用している場合、第1引数に指定されたデータは変換されてからセションBeanに送信されます。また、セションBeanが返したデータで上書きが行われた結果がinvokeメソッドから返ります。データBean変換機能と上書き機能については“20.2.3 セションBeanとクライアントとの連携”を参照してください。

Callインターフェイスのinvokeメソッドが発生させるUjiTargetException

セションBeanの実行中に例外が発生し、その例外がクライアントに通知される種類の例外である場合、invokeメソッドはUjiTargetExceptionのサブクラスであるEJBApplicationExceptionを発生します。EJBApplicationExceptionのgetRootCauseメソッドにより、セションBeanで発生した例外を取得できます。クライアントに通知される例外については“例外処理”を参照してください。

20.4.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変換機能と上書き機能については“セションBeanとクライアントとの連携”を参照してください。

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

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