- javax.transaction.global.timeoutの役割は何ですか?
- CheckpointAlgorithmにcheckpointTimeout()メソッド を実装する必要がありますか?
- サーバー構成レベルに何かありますか? これは、アプリケーション レベルで設定されたものとどのように相互作用しますか?
1 に答える
( 2016-12-02 を編集: アプリケーション トランザクションにタイムアウト値「0」が設定されている場合のデフォルト動作の説明を書き直しました)。
概要
アプリケーション レベルのオプションと、それがサーバー レベルのタイムアウトとどのように相互作用するかについて説明します。
WebSphere Liberty Java Batch のチャンク・ステップでは、アプリケーション・レベルのタイムアウトを設定するか、タイムアウト値「0」をデフォルトのサーバー・レベルのタイムアウトに設定することができます。
さらに、別のサーバー レベルの設定を使用して、ゼロ以外のアプリケーション レベルのタイムアウト値の上限を設定することもできます。
アプリケーションレベルのタイムアウト
チャンク トランザクションのタイムアウトは、次のいずれかで設定できます。
XML (静的)
特別なステップ プロパティを持つ JSL のステップ レベル: javax.transaction.global.timeout (秒)
例えば
<step id="MyStep">
<properties>
<!-- In seconds -->
<property name="javax.transaction.global.timeout" value="120"/>
XML で明示的に定義されていない場合、デフォルトは 180 (秒) です。
Java (動的)
より動的/プログラム的な制御が必要な場合は、カスタムCheckpointAlgorithmを実装し、そのcheckpointTimeout()を記述して、必要なものを返すことができます (本当に必要な場合でも、チャンクごとに異なる値)。
サーバー (JVM) レベルのタイムアウト
アプリケーションのタイムアウト値の上限の設定
アプリケーションが設定するタイムアウト値が大きすぎるのを防ぐことができます。
サーバー構成 (server.xml) でpropogatedOrBMTTranLifetimeTimeoutを使用します。
<transaction propogatedOrBMTTranLifetimeTimeout="90s"/>
これは、 checkpointTimeout()メソッドを介して、またはゼロ以外のアプリケーション タイムアウト値の上限として機能します。javax.transaction.global.timeout
アプリケーションのタイムアウトが設定されていない場合のデフォルトのタイムアウト
が'0'javax.transaction.global.timeout
に設定されている場合、またはcheckpointTimeout()メソッドが'0'を返す場合、サーバーからデフォルトのタイムアウトを取得します。
このタイムアウト値のデフォルトは 120 秒です。
サーバー構成 (server.xml) を変更するには、totalTranLifetimeTimeoutを使用します。
<transaction totalTranLifetimeTimeout="60s"/>
ノート:
ただし、前述のように、javax.transaction.global.timeout
アプリケーションのタイムアウトがまったく設定されていない場合、デフォルトで 180 になるため、totalTranLifetimeTimeoutは機能しません。
その他の注意事項・参考文献
注: WDTツールのデザインビューを使用すると、これらのサーバー構成属性値の操作と記憶がはるかに簡単になります。
WebSphere Application Server の従来の構成へのマッピング
ここでのpropogatedOrBMTTranLifetimeTimeout属性は、基本的に従来型の最大トランザクション タイムアウトにマップされますが、totalTranLifetimeTimeoutは、従来型の合計トランザクション ライフタイム タイムアウトにより明確にマップされます。
このドキュメントには、Liberty との関連性が高いいくつかの優れた例が記載されています。