EJB 非同期メソッドのクライアント・プログラミング・モデル

Enterprise JavaBeans (EJB) 3.1 仕様に規定されているように、 ローカル・ビジネス、リモート・ビジネス、またはインターフェースなしのビューの 3 つのタイプのインターフェースを 介して、EJB 非同期メソッドを呼び出すことができます。EJB 2.1 クライアント・ビューまたは Web サービス・ビューを介した呼び出しは、許可されていません。

EJB 非同期メソッドに対して指定するインターフェースの戻りの型は、void または java.util.concurrent.Future <V> である必要があります。その他の戻りの型は、このインターフェースではサポートされません。 EJB 3.1 仕様に規定されているように、Bean 実装メソッド の戻りの型は同じである必要があります。

アプリケーションで EJB 非同期メソッド呼び出しの結果を確認する必要がない場合は、戻りの型が void であるインターフェース・シグニチャーを使用します。 逆に、アプリケーションで EJB 非同期メソッド呼び出しの結果を確認する必要がある場合は、 戻りの型が Future<V> であるインターフェースを使用してください。

結果を確認するかどうかを検討することに加え、クライアントで例外を処理できるように準備しておく必要があります。 EJB 3.1 仕様で規定されているように、非同期メソッドの実行をスケジュールするために必要な内部リソースをコンテナーが割り振ることができない場合、クライアントは例外を受け取ります。 この場合、クライアントは非同期メソッドが実行されないと見なすことができます。また、非同期メソッドがクライアント以外のスレッドで実行されているときに、例外が発生する場合があります。

重要: 非同期メソッドの戻りの型が void である場合、クライアントには、例外情報を取得するメカニズムがありません。 この場合、EJB コンテナーは通知メッセージをログに記録します。 ただし、戻りの型が Future<V> 型である非同期メソッドの場合、EJB コンテナーは例外情報を Future<V> オブジェクトに保存します。この場合、Future<V> オブジェクトに関連付けられたゲット・メソッドは、例外 ExecutionException を生成します。クライアントは ExecutionException で getCause メソッドを呼び出し、例外に関する詳細を取得する必要があります。

ゲット・メソッドの呼び出し時点で非同期メソッドの実行が完了していない場合には、Future<V> オブジェクトに対するゲット・メソッドによってクライアント・スレッドがブロックされることが、クライアントよって認識される必要があります。クライアントでこの動作を回避する場合は、クライアントは isDone メソッドを定期的に呼び出すことによって Future<V> オブジェクトをポーリングし、非同期メソッドがいつ完了したかを判断することができます。

最終的には、クライアントは Future<V> オブジェクトを使用して、 非同期メソッド呼び出しを取り消すことができます。実行を待っている非同期メソッド呼び出しを取り消そうと した場合、その非同期メソッド呼び出しは実行されず、 Future<V> オブジェクトとの他の対話にはこの取り消しが反映されます。非同期メソッドを取り消そうとしたのが、そのメソッドの実行が開始された後で あった場合、実行は続行されますが、 まだ Bean メソッドはクライアントが呼び出しを取り消そうとしたことを判別し、 アプリケーション固有の戻り値または例外で応答することができます。

もう 1 つの代替方法は、クライアントがタイムアウト・パラメーターを含むゲット・メソッドを使用することです。このゲット・メソッドは、指定されたタイムアウト期間のみ結果を待機します。 このゲット・メソッドは、メソッドの実行が完了するとすぐに、またはタイムアウト期限が切れた場合に、メソッドの実行が完了していなくてもクライアントに戻ります。

ネストされた非同期呼び出しがサポートされています。つまり、非同期メソッド内から非同期メソッド呼び出しを行うことができます。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): 非同期メソッド呼び出しを ネストするときには、十分なリソース (スレッド最大数および作業要求キュー・サイズ) が 割り当てられるように、作業マネージャー設定を考慮してください。詳しくは、『非同期メソッドの EJB コンテナー作業マネージャー』を お読みください。gotcha

『EJB 非同期メソッドを呼び出すクライアント・コードの開発』を参照してください。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_amclientpmodel
ファイル名:cejb_amclientpmodel.html