Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第2部 Apcoordinatorコアの機能> 第6章 リモート共通インタフェース

6.3 CallFactoryインタフェースとCallインタフェースによる呼び出し

CallFactoryインタフェースとCallインタフェースの使用例を示します。


import com.fujitsu.uji.ext.Call;
import com.fujitsu.uji.ext.CallFactory;
import com.fujitsu.uji.ext.UjiRemoteException;
import com.fujitsu.uji.ext.UjiTargetException;
import com.fujitsu.uji.ext.UjiCreateException;

public Object doSomething(DispatchContext context, DataBean dataBean){
  CallFactory factory = context.getCallFactory();
  try {
    Call call = factory.createCall("MySessionBean");        // 名前を指定する
    ResponseBean response = (ResponseBean)call.invoke(dataBean,"update"); // 送信するデータとコマンド名を指定して呼び出す
    ...
  } catch (UjiCreateException e) {
    // createCallメソッドで発生した例外
    ...
  } catch (UjiRemoteException e) {
    // 通信中の例外
    // invokeメソッドで発生する。
    ...
  } catch (UjiTargetException e) {
    // 呼び出したセションBeanやSOAPサーバアプリケーションで発生した例外
    // invokeメソッドで発生する。
    ...
  }
}

処理の手順は以下のようになります。

  1. DispatchContextクラスのgetCallFactoryメソッドでCallFactoryインタフェースを取得します。
  2. リモートマップに定義した名前を指定してCallFactoryのcreateCallメソッドを呼び出し、Callインタフェースを取得します。
  3. Callインタフェースのinvokeメソッドで、セションBeanまたはSOAPサーバアプリケーションを呼び出します。invokeメソッドの引数に与えたデータとコマンド名が、呼び出されたセションBeanまたはSOAPサーバアプリケーションに送信されます。
  4. セションBeanまたはSOAPサーバアプリケーションが返したデータは、invokeメソッドの返り値として取得できます。

上記の手順3でデータを送信せずコマンドのみを指定したい場合は、データとしてnullを指定してください。この場合、呼び出されたセションBeanまたはSOAPサーバアプリケーションでは、入力データを指定しない形式の行がコマンドマップから検索され、指定したコマンドに対応するメソッドが呼び出されます。

CallFactoryのcreateCallメソッドは、Callインタフェースの作成に失敗するとUjiCreateExceptionを発生します。UjiCreateExceptionのgetRootCauseメソッドで、失敗の原因となった例外が取得できます。

Callインタフェースのinvokeメソッドは以下の2種類の例外を発生します。

・UjiRemoteException
呼び出し先との通信に失敗した場合に発生する例外です。UjiRemoteExceptionのgetRootCauseメソッドで失敗の原因となった例外が取得できます。
・UjiTargetException
呼び出したセションBeanまたはSOAPサーバアプリケーション実行中に例外が発生したことを表す例外です。実際にはUjiTargetExceptionそのものではなく、そのサブクラスであるEJBApplicationExceptionとUjiSOAPExceptionが例外として使用されます。前者はセションBean、後者はSOAPサーバアプリケーションで使用されます。原因となった例外の取得方法は、サブクラスによって異なります。詳細はAPIリファレンスを参照してください。

セションBeanやSOAPサーバアプリケーションに固有の動作については、それぞれEJBの呼び出しWebサービスの呼び出しを参照してください。


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005