非同期メソッドでは,戻り値として次のどちらかを選択できます。
- void
- java.util.concurrent.Future<V>(Vは戻り値の型)
以降の説明ではFuture<V>と表記します。
なお,voidを選択した場合,アプリケーション例外は宣言できません。Future<V>を選択した場合は,アプリケーション例外を宣言できます。なお,リモートインタフェースから呼び出した場合,処理結果にアクセスするためのFuture<V>オブジェクトはEJBコンテナで保持されます。
非同期メソッドでは,Future<V>の実装クラスであるjavax.ejb.AsyncResult<V>を使用することで,メソッドの処理結果オブジェクトを呼び出し元に渡すことができます。
@Asynchronousアノテーションを使用したコーディング例として,戻り値にFuture<V>を指定した場合とvoidを指定した場合の例を次に示します。
// Enterprise Bean Business method
//戻り値にFuture<V>を指定した例
@Asynchronous
public Future<Integer> performCalculation(...) {
// ... do calculation
Integer result = null;
if (ejb_context.wasCancelCalled()) {
return new AsyncResult<Integer>(-1);
}
...
return new AsyncResult<Integer>(result);
}
//戻り値にvoidを指定した例
@Asynchronous
public void performAddition (...) {
Integer result = null;
// ... do addition
} |