EJB 3.1 非同期メソッド
Enterprise JavaBeans™ (EJB) 3.1 仕様には、アプリケーション開発者が、呼び出し元スレッドとは別のスレッドで実行される EJB 非同期メソッドを構成する場合に使用できる機能が含まれています。
このメカニズムによって、クライアント呼び出し要求が実際のメソッド実行から分離されます。 クライアント・スレッドは、EJB メソッドが EJB コンテナーの指示に従って別のスレッドで実行されている間に、他の処理を引き続き行うことができます。
クライアントは、後で、非同期メソッドの実行結果を 確認したい場合があります。これは、実行して戻る と呼ばれることがあります。 この場合、EJB コンテナーはクライアントに、 java.util.concurrent.Future<V> インターフェースを実装するオブジェクトを戻します。クライアントはこのオブジェクトを使用して、非同期メソッド呼び出しのステータス、結果、または例外を確認できます。 あるいは、非同期メソッドが何も結果を 戻さない場合があり、これは、実行して忘れる と呼ばれることがあります。
詳しくは、アプリケーションでの EJB 非同期メソッドの使用方法についての 説明を参照してください。
以下に EJB 非同期メソッドの使用例をいくつか示します。
- アプリケーションは複数の独立した部分処理からなり、
最終結果を生成するためにはそれらの処理をすべて実行する必要があります。例えば、
旅行の予約が、次の 3 つの部分から構成されているとします。
- 飛行機の予約をする。
- レンタカーの予約をする。
- ホテルの予約をする。
- アプリケーションは複数の独立した部分処理からなり、
アプリケーションはこれらを実行する必要がありますが、処理の結果には関与しません。例えば、ある小売業者に 4 つの支店があり、1 日の営業の終わりに各支店からの売上報告を本社で印刷するとします。
アプリケーション開発者は、EJB 非同期メソッドをバッチ処理メカニズムとして使用できます。
複数の EJB メソッド呼び出しを使用して、売上報告取得要求のバッチを各支店に 1 つずつ送信できます。
この例では、アプリケーションはこれらのメソッド呼び出しの結果を確認する必要がないと想定されます。 確認は、翌朝プリンターから売上報告を取り上げる本社の従業員が処理することになります。 いずれかの支店が要求された報告を送信できなかったとします。 報告を収集する担当者は、それが予定されていたことか (例えば支店が改装のため閉店している)、またはその支店に対して売上報告取得要求を再発行する必要があるのかを決定できます。