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

第2部 Apcoordinatorコアの機能> 第11章 バックエンドとの連携> 11.2 サービスの利用

11.2.1 プログラミング

AsyncServiceFactoryインタフェース、AsyncServiceAdapterインタフェースといったインタフェースを利用します。各インタフェースを利用し、異なるアプリケーションを呼び出すサービスの利用が可能となります。

AsyncServiceFactoryインタフェース、AsyncServiceAdapterインタフェースの利用例を示します。


import com.fujitsu.uji.async.AsyncServiceFactory;
import com.fujitsu.uji.async.AsyncServiceAdapter;
import com.fujitsu.uji.async.AsyncServiceID;
import com.fujitsu.uji.async.AsyncServiceFactory;

public Object doSomething(DispatchContext context, DataBean dataBean){
  try {
    // 1)ファクトリを取得する。
    AsyncServiceFactory factory
       = (AsyncServiceFactory)InitialFactory.createFactory(context, InitialFactory.ASYNCSERVICEFACTORY);
    // 2)サービスを提供するアダプタインスタンスを生成する。
    AsyncServiceAdapter adapter = factory.createAsyncServiceAdapter("MyCorbaService");
    // 3)サービスを開始する。
    adapter.begin(null);
    // 4)メソッドを呼び出す。
    AsyncServiceID id0 = (AsyncServiceID)adapter.execute(null, "getType");
    Object [] data = new Object[1];
    data[0] = new Integer(1);
    AsyncServiceID id1 = (AsyncServiceID)adapter.execute(data, "getPAddress");
    // 5)結果を参照する。
    Object result0 = adapter.getResult(id0);
    Object result1 = adapter.getResult(id1);
    // 結果の処理
    if( result0 != null && result0 instanceOf AsyncServiceExecuteResult )
      String str = ((AsyncServiceExecuteResult)result0).getValue();
      ...
  }catch(AsyncServiceException ex) {
      ...
  }finally{
    try{
      // 6)サービスを終了する。
      adapter.end();
    }catch(Exception ex){
      ...
    }
  }
}

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

  1. InitialFactoryクラスのcreateFactoryメソッドでAsyncServiceFactoryインタフェースを取得します。
  2. AsyncServiceFactoryインタフェースのcreateAsyncServiceAdapterメソッドへasyncマップ(定義ファイル)に記載したサービス名を指定して、AsyncServiceAdapterインタフェースを取得します。
  3. AsyncServiceAdapterインタフェースのbeginメソッドへ必要なパラメタを指定しサービスの初期化を行います。
  4. AsyncServiceAdapterインタフェースのexecuteメソッドへ必要なパラメタを指定しサービスを呼び出します。
  5. AsyncServiceAdapterインタフェースのgetResultメソッドへexecuteメソッドの戻り値をパラメタに指定しサービスの処理結果を取得します。処理結果は、利用するサービスにより、返却されるオブジェクトが異なります。
  6. AsyncServiceAdapterインタフェースのendメソッドを呼び出しサービスを終了します。

上記の手順3、および、手順4で指定するパラメタは、利用するサービスアダプタにより、異なります。詳しくは、利用可能なアダプタの説明を参照してください。

ポイント

同期・非同期といった、アプリケーションの呼び出し方法をプログラムで指定することはありません。
アプリケーションの呼び出し方法は、asyncマップの定義により決まります。

注意

アプリケーションの呼び出し方法により、サービス要求(executeメソッド)の復帰タイミング、結果が返却されるタイミングが異なります。
AsyncServiceAdapter#getResultメソッドがnullを返却しても、AsyncServiceAdapter#hasResultメソッドがtrueを返す場合があります。これは、結果が返却されない、または、結果nullが返却された場合などに発生します。
結果を削除するには、次の方法があります。
結果を削除した後では、getResultメソッドなどにより、結果を取得することはできません。
処理中を示すAsyncServiceUnreceivedResultを削除した後に、呼び出した処理の結果を受け取ることはできません。また、処理中を示すAsyncServiceUnreceivedResultを削除しても要求した処理を取り消すことにはなりません。

目次 前ページ次ページ

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