スクリプトを使用した EJB 非同期メソッドの構成

wsadmin スクリプトを使用すると、Enterprise JavaBeans (EJB) 非同期メソッドを構成できます。

始める前に

Jacl または Jython および wsadmin スクリプトに関する実際上の知識が必要です。

このタスクについて

EJB 非同期メソッドの動作は、server.xml ファイル内の EJBAsync 構成オブジェクトを使用して構成されます。 EJB 非同期メソッドを使用している場合は、環境に最適な設定が得られるように、EJBAsync 構成オブジェクトを更新する必要があります。EJBAsync 構成オブジェクトは、サーバー・レベルで存在します。つまり、複数サーバー環境内のそれぞれのサーバーは、独自の EJBAsync 構成オブジェクトを使用するので、個別に構成する必要があります。

手順

  1. Jython スクリプト言語を 使用する wsadmin スクリプト・ツールを起動します。
  2. 更新が必要な EJBAsync 構成オブジェクトの属性を判別します。 EJBAsync 構成オブジェクトの以下の属性を更新できます。
    表 1. EJBAsync 構成オブジェクトの属性. この表では、EJBAsync 構成オブジェクトの属性について説明します。
    属性 説明
    maxThreads 非同期 EJB メソッドの実行に使用されるスレッドの最大数を指定します。

    デフォルト値は 5 です。

    workReqQSize 作業要求キューのサイズを指定します。作業要求キューは、要求された非同期メソッドに対してスレッドが実行可能になるまで、そうした非同期メソッドを保持するバッファーです。

    maxThreads 属性と workReqQSize 属性の合計は、同時実行が可能なメソッド要求の合計数です。

    例えば、maxThreads が 5 スレッドに設定され、workReqQSize が 50 に設定されている場合、同時実行が可能なメソッド要求の合計数は 55 です。

    デフォルト値は 0 です。この場合、キューのサイズは、ランタイム環境によって管理されます。ランタイムは、現在 20 とスレッドの最大数の値のうち大きいほうの値を使用します。

    workReqQFullAction スレッド・プールが使い尽くされて、作業要求キューがフルになった場合にとるアクションを指定します。

    1 に設定した場合、スレッド (またはキュー内の場所) が使用可能になるのを待機するのではなく、例外が発生します。

    0 に設定した場合、非同期メソッドの実行を要求するスレッドは、スレッド (またはキュー内の場所) が使用可能になるまで待機します。

    デフォルト値は 0 です。

    customWorkManagerJNDIName 名前空間でカスタム定義の作業マネージャーを検索するために使用される Java™ Naming and Directory Interface (JNDI) 名を指定します。

    デフォルト値はヌルです。

    useCustomDefinedWM カスタム定義の作業マネージャー・インスタンスを使用するのか、それともデフォルトの内部作業マネージャー・インスタンスを使用するのかを指定します。

    useCustomDefinedWM 属性が true に設定されている場合、カスタム作業マネージャー・インスタンスが使用されます。この場合、customWorkManagerJNDIName 属性を設定する必要があり、他のすべての属性は無視します。

    useCustomDefinedWM 属性が false に設定されている場合、デフォルトの内部作業マネージャー・インスタンスが使用されます。 この場合、customWorkManagerJNDIName 属性は無視され、デフォルトの作業マネージャー・インスタンスを構成するために他のすべての属性が使用されます。

    デフォルト値は false です。

    futureTimeout 応答必要送信の非同期メソッド実行の結果として作成された、サーバー・サイドのフューチャー・オブジェクトが使用可能になっている時間を秒数で指定します。get() メソッドを呼び出し、リモート・クライアントに値が戻された後では、サーバー・サイドのフューチャー・オブジェクトは無効になります。 メモリー・リークを避けるために、フューチャー・オブジェクトに対して get() メソッドを呼び出すか、正でゼロでないフューチャー期間値を指定する必要があります。

    ゼロのフューチャー期間値は、フューチャー・オブジェクトがタイムアウトになることがないことを示します。

    デフォルト値は 86400 です。 この場合、24 時間後にフューチャー・オブジェクトが有効期限切れとなり、アプリケーション・サーバーによってクリーンアップされ、もう使用できなくなります。

    フューチャー・オブジェクトが有効期限切れとなった後に、get()メソッドが呼び出されると、org.omg.CORBA.OBJECT_NOT_EXIST 例外がスローされます。

    サポートされる構成 サポートされる構成: この値は、リモート・ビジネス・インターフェースを使用してエンタープライズ Bean を呼び出すクライアントのみに適用可能で、ローカル・ビジネス・インターフェースまたは非インターフェース・ビューには使用されません。 非同期作業が完了すると、サーバーは、サーバー・サイドのフューチャー・オブジェクトに指定された期間についてアラームを設定します。このアラームが活動化されると、サーバーは、フューチャー・オブジェクトに関連したすべてのリソースを解放し、クライアントが使用できないようにします。指定された期間が経過する前にクライアントが将来のオブジェクトで get() メソッドを呼び出すと、アラームは取り消され、将来のオブジェクトに関連するすべてのリソースが解放されます。sptcfg
    サポートされる構成 サポートされる構成: この属性は、サーバー上のフューチャー・オブジェクトの数に影響する場合があります。 サーバー上で開いているフューチャー・オブジェクトの数を判別するには、AsynchFutureObjectCount PMI 統計を使用します。これは、アプリケーションがフューチャー・オブジェクトに対して get() メソッドを呼び出さずにこのオブジェクトを累積するかどうかの判断に役立ちます。詳しくは、『エンタープライズ Bean カウンター』というトピックを参照してください。sptcfg
  3. 適切な EJBAsync 構成オブジェクトの参照を取得し、それを変数に保管します。

    Jacl を使用:

    set async [$AdminConfig list EJBAsync]

    Jython の使用:

    async = AdminConfig.list('EJBAsync')

    複数サーバー環境の場合、複数の EJBAsync 構成オブジェクトが戻されます。 リスト上でプログラマチックにループし、更新が必要なサーバーに対応する EJBAsync 構成オブジェクトを選択します。

    複数サーバー環境では、EJBAsync オブジェクトのリスト上でプログラマチックにループする代わりに、適切な EJBAsync オブジェクトを手動で選択し、それをコピーして変数に貼り付けることができます。

    AdminConfig list コマンドの出力例は以下のとおりです。

    (cells/myNode04Cell/nodes/myCellManager01/servers/dmgr|server.xml#EJBAsync_1)(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)

    必要な EJBAsync オブジェクトに対する参照をコピーして、変数に貼り付けることができます。

    Jacl を使用:

    set async "(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)"

    Jython の使用:

    async = "(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)"
  4. EJBAsync 構成オブジェクトの属性を更新します。

    EJBAsync 構成オブジェクトの属性を更新するには、AdminConfig modify コマンドを使用します。このコマンドの入力として、前のステップで得られた EJBAsync 参照を指定し、さらに attributeName と attributeValue の組み合わせのリストを指定します。

    最大スレッド・カウントを 10 スレッド、キュー・サイズを 15、futureTimeout を 3600 秒と設定するには、以下のようにします。

    Jacl を使用:

    set update "{maxThreads 10} {workReqQSize 15} {futureTimeout 3600}"
    $AdminConfig modify $async $update
                            

    Jython の使用:

    AdminConfig.modify(async, '[ [maxThreads "10"] [workReqQSize "15"] [futureTimeout "3600"] ]')
  5. 構成の変更を保存します。

    Jython の使用:

    AdminConfig.save()

    Jacl を使用:

    $AdminConfig save
  6. ノードを同期します (Network Deployment 環境の場合のみ)。

    Jacl を使用:

    set sync1 [$AdminControl completeObjectName type=NodeSync,node=<your node>,*]
    $AdminControl invoke $sync1 sync

    Jython の使用:

    sync1 = AdminControl.completeObjectName('type=NodeSync,node=<your node>,*')
    AdminControl.invoke(sync1, 'sync')

    これらの例では、サーバーに接続している間、ノード同期を実行する必要があります。

タスクの結果

更新の結果として、EJBAsync 構成オブジェクトは現在指定された属性値を反映しています。ここでサーバーを再始動すると、サーバー上で変更が更新されます。

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



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