スクリプトによるタイマー・サービスの構成

wsadmin スクリプトを使用して、Enterprise JavaBeans (EJB) タイマー・サービスを構成します。

始める前に

Jacl または Jython、および wsadmin スクリプトに関する実用的な知識が必要です。

このタスクについて

EJB タイマーの動作は、server.xml ファイルの EJBTimer 構成オブジェクトを使用して構成されます。 EJB タイマーがある場合には、EJBTimer 構成オブジェクトを更新して、環境に最適な設定を取得する必要があります。

EJBTimer 構成オブジェクトは、サーバー・レベルで存在します。 つまり、複数サーバー環境では、サーバーごとに独自の EJBTimer 構成オブジェクトがあり、個別に構成が必要です。

手順

  1. Jython またはスクリプト言語を使用してスクリプト・ツールを起動します。
  2. EJBTimer 構成オブジェクトで更新が必要な属性を決定します。 EJBTimer 構成オブジェクトでは、以下の属性が更新可能です。
    • datasourceJNDIName
    • datasourceAlias
    • tablePrefix
    • pollInterval
    • numAlarmThreads
    • schedulerJNDIName
    • numNPTimerThreads
    • nonPersistentTimerRetryCount
    • nonPersistentTimerRetryInterval
    • uniqueTimerManagerForNP

    各属性の詳細説明については、EJB タイマー・サービスの設定に関する情報を参照してください。

    EJB タイマーには、4 つのタイプがあります。
    • デフォルトの内部スケジューラー・インスタンスでサポートされるパーシスタント・タイマー
    • カスタム・スケジューラー・インスタンスでサポートされるパーシスタント・タイマー
    • パーシスタント・タイマーとスレッド・プールを共有する非パーシスタント・タイマー
    • パーシスタント・タイマーとスレッド・プールを共有しない非パーシスタント・タイマー
    サーバーは常に、2 つのいずれかのパーシスタント・タイマー・タイプと、 2 つのいずれかの非パーシスタント・タイマー・タイプを使用するように構成されます。

    EJBTimer 構成オブジェクトには、4 つすべての EJB タイマー・タイプの構成データが含まれます。 4 つの各タイプのタイマーは、EJBTimer 構成オブジェクトの構成属性のサブセットを使用します。 EJBTimer 構成オブジェクトの属性はすべて、少なくとも 1 つのタイマー・タイプの構成に使用されますが、 すべてのタイマー・タイプの構成に使用される属性はありません。 このため、構成に使用するタイマー・タイプと、それに適用される構成属性を把握する必要があります。

    表 1. タイマー・タイプと構成属性. 各タイプのタイマーの構成に使用される EJBTimer 属性を示します。
    属性 パーシスタント、デフォルト・スケジューラー パーシスタント、カスタム・スケジューラー 非パーシスタント、共有スレッド・プール 非パーシスタント、固有のスレッド・プール
    datasourceJNDIName はい いいえ。カスタム・スケジューラー構成で指定 いいえ いいえ
    datasourceAlias はい いいえ。カスタム・スケジューラー構成で指定 いいえ いいえ
    tablePrefix はい いいえ。カスタム・スケジューラー構成で指定 いいえ いいえ
    pollInterval はい いいえ。カスタム・スケジューラー構成で指定 いいえ いいえ
    numAlarmThreads はい いいえ はい いいえ
    schedulerJNDIName いいえ はい いいえ いいえ
    numNPTimerThreads いいえ いいえ いいえ はい
    nonPersistentTimerRetryCount いいえ いいえ はい はい
    nonPersistentTimerRetryInterval いいえ いいえ はい はい
    uniqueTimerManagerForNP いいえ いいえ はい はい

    schedulerJNDIName 属性の値の有無により、使用されるパーシスタント・タイマー・タイプが決まります。 schedulerJNDIName 属性に値があれば、カスタム・スケジューラー・インスタンスが使用されます。 schedulerJNDIName に値がないと、デフォルトの内部スケジューラー・インスタンスが使用されます。

    numAlarmThreads 属性は、管理コンソールのパーシスタント EJB タイマー構成セクションの「タイマー・スレッド数」オプションにマップされます。 numNPTimerThreads 属性は、管理コンソールの非パーシスタント EJB タイマー構成セクションの「タイマー・スレッド数」オプションにマップされます。

    uniqueTimerManagerForNP 属性は、管理コンソールの「パーシスタント・タイマーに構成されたスレッド・プールを共有」 (パーシスタント・タイマーの場合) および「非パーシスタント・タイマーに別個のスレッド・プールを作成」 (非パーシスタント・タイマーの場合) にマップされます。

    uniqueTimerManagerForNP 属性は、パーシスタント・タイマーと非パーシスタント・タイマーでスレッド・プールが共有されるかどうかを決定します。 また、これによって、numAlarmThreads または numNPTimerThreads 構成属性が使用されるかどうかも決定します。

    表 2. uniqueTimerManagerForNP 属性の影響. uniqueTimerManagerForNP 属性は、スレッド・プール共有とスレッド構成の両方に影響します。
    uniqueTimerManagerForNP 属性 パーシスタント・タイマーと非パーシスタント・タイマーがスレッド・プールを共有 使用されるスレッド構成属性 無視されるスレッド構成属性
    true いいえ numNPTimerThreads numAlarmThreads
    false はい numAlarmThreads numNPTimerThreads
  3. 正しい EJBTimer 構成オブジェクトの参照を取得して、変数に格納します。

    Jacl を使用:

    set timer [$AdminConfig list EJBTimer]
    Jython を使用:
    timer = AdminConfig.list('EJBTimer') 

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

    複数サーバー環境では、 EJBTimer オブジェクトのリストをプログラムでループする代わりに、 正しい EJBTimer オブジェクトを手動で選択してコピーし、変数に貼り付けます。

    例えば、AdminConfig list コマンドの出力が、以下であるとします。

    (cells/myCell01/nodes/myCellManager01/servers/dmgr|server.xml#EJBTimer_1)(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)

    必要な EJBTimer オブジェクトの参照をコピーして変数に貼り付けます。

    Jacl を使用:
    set timer "(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)"
    Jython を使用:
    timer = "(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)"
  4. EJBTimer 構成オブジェクトの属性を更新します。

    AdminConfig modify コマンドを使用して、EJBTimer 構成オブジェクトの属性を更新します。 このコマンドの第 1 引数は、前のステップで 取得した EJBTimer 参照です。このコマンドの 2 番目の引数は、名前と値の ペアのリストです。

    再試行カウント 10 回、および各試行の再試行間隔 15 秒を設定する場合、次のようにします。

    Jacl の使用:
     set update "{nonPersistentTimerRetryCount 10} {nonPersistentTimerRetryInterval 15}"
     $AdminConfig modify $timer $update
    Jython を使用:
    AdminConfig.modify(timer, '[[nonPersistentTimerRetryCount "10"] [nonPersistentTimerRetryInterval "15"]]') 
  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')
    これらの例のノード同期は、サーバーに接続されている間に実行される必要があります。

タスクの結果

更新の結果として、EJBTimer 構成オブジェクトは、指定した属性値を反映するようになりました。 サーバーで変更を更新するために、サーバーを再始動してください。

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



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