AsyncServiceAdapterインタフェースを実装し、サービスアダプタを作成できます。
AsyncServiceFactoryインタフェースで指定したサービス名が、asyncマップで定義したuserタグのname属性と一致する場合に、利用者が作成した指定のサービスアダプタを生成します。
次は、MyAppcServiceというサービス名のアダプタを直接呼び出しするasyncマップの定義例です。
<asyncMap> <user name="MyAppcService" class="test.MyAppService"/>
次は、test.MyAppServiceクラスの定義例です。
package test; import com.fujitsu.uji.async.*; public class MyAppService implements AsyncServiceAdapter{ public MyAppService(){ ... } public void begin(Object parameter) throws AsyncServiceException{ ... } public AsyncServiceID execute(Object data, Object parameter) throws AsyncServiceException{ ... } public boolean hasResult(AsyncServiceID id) throws AsyncServiceException{ ... } public Object getResult(AsyncServiceID id) throws AsyncServiceException{ ... } public Object removeResult(AsyncServiceID id) throws AsyncServiceException{ ... } ...
次は、上記のサービスを利用するプログラム例です。
AsyncServiceFactory factory = (AsyncServiceFactory)InitialFactory.createFactory(context, InitialFactory.ASYNCSERVICEFACTORY); // userタグのname属性がMyAppcServiceの環境を参照しサービスアダプタインスタンスを生成する。 AsyncServiceAdapter adapter = factory.createAsyncServiceAdapter("MyAppcService"); adapter.begin(null); // executeメソッドを呼び出す。 adapter.execute(null, null); ...
beginメソッド
本メソッドで呼び出す利用者アプリケーションの初期化を行います。
executeメソッド
利用者アプリケーションを実行します。
引数へは呼び出すアプリケーションで利用するパラメタを指定してください。
getResultメソッド
利用者アプリケーションの結果を参照します。
受け取る結果は、利用者が作成したアダプタの実装に依存します。
結果は、アダプタの実装、サービスの呼び出し方法、および、状態により異なります。
直接呼出し
利用者の実装した結果が返ります。
同期変換
利用者の実装した結果が返ります。
突き放し
nullが返ります。
突き合せ(結果待ち合わせ中)
AsyncServiceUnreceivedResultが返ります。
突き合せ(結果受け取り後)
利用者の実装した結果が返ります。
AsyncServiceResultListener
突き合せによる呼び出しを行なう場合に、AsyncServiceResultListenerを設定することにより、結果を受け取ることが可能です。
listenerへは、AsyncServiceResultEventが通知されます。通知イベントのgetValueメソッドにより得られるオブジェクトは、利用者の実装したgetResultメソッドが返すオブジェクトが返ります。