Enterprise JavaBeans 非同期メソッドの構成

非同期 EJB メソッドの呼び出し時にどの管理対象スレッド・コンテキストがキャプチャーされるのかを制御する ContextService インスタンスを使用するように、EJB コンテナーを構成できます。キャプチャーされたコンテキストが非同期スレッド上で確立されてから、EJB メソッドが開始されます。

このタスクについて

アプリケーション・セキュリティーが有効になっていると、非同期 EJB メソッドが開始されたスレッドに伝搬されるのは、セキュリティー・コンテキストのみです。ContextService インスタンスを構成して、このデフォルトの動作をオーバーライドする方法は、追加のコンテキストを非同期スレッドに伝搬する必要がある場合に役立ちます。

非同期スレッド上で EJB メソッドを開始する前に、EJB コンテナーは、EJB に関連付けられた以下のコンテキストを確立します。

  • クラス・ローダー・コンテキスト
  • Java™ EE メタデータ・コンテキスト

したがって、呼び出し側スレッドからこれらのコンテキストを伝搬する必要はありません。これらのコンテキストは、EJB コンテナーがターゲット EJB に関連付けられたコンテキストに置き換えます。

手順

  1. server.xml ファイル内で、非同期メソッドをサポートする EJB フィーチャーと、concurrent フィーチャーの両方が組み込まれるように、アプリケーション・サーバーを構成します。例えば、以下の行を server.xml ファイルに追加します。
    <featureManager>
        <feature>appSecurity-2.0</feature>
        <feature>concurrent-1.0</feature>
        <feature>ejbLite-3.2</feature>
    </featureManager>
  2. server.xml ファイル内で、必要なコンテキストをキャプチャーして伝搬するように、ContextService インスタンスを構成します。この例では、非同期メソッドのデフォルトの動作と同等の ContextService 構成を定義しています。
    <contextService id="SameAsNoConfigAsyncContextService">
        <securityContext/>
    </contextService>

    ContextService 定義にセキュリティー・コンテキストが組み込まれていないと、セキュリティー・コンテキストはキャプチャーも伝搬もされません。ContextService 定義は、デフォルトの動作の代替であり、デフォルトの動作に追加されるものではなりません。

    キャプチャーと伝搬が必要なコンテキストがさらにある場合は、フィーチャーおよびコンテキストに固有の構成が追加で必要になる可能性があります。

  3. server.xml ファイル内で、特定の ContextService 構成を使用するように EJB コンテナーを構成します。 以下に例を示します。
    <ejbContainer>
        <asynchronous contextServiceRef="EJBAsyncContextService"/>
    </ejbContainer>

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_config_ejbasynch
ファイル名: twlp_config_ejbasynch.html