スケジューラーは、デフォルトでは、グローバル・トランザクション・コンテキストでタスクを実行します。
タスクが構成上の問題、あるいはアプリケーション・エラーが原因で失敗した場合、
スケジューラーは、スケジューラー障害しきい値に達するまでタスクの再試行を試みます。
このトピックでは、失敗しているタスクを停止する方法について説明します。
このタスクについて
タスクが障害しきい値に達したとき、スケジューラーは、スケジューラー・デーモンが WASScheduler
MBean を使用して再始動し、スケジューラーが他のサーバーへフェイルオーバーするか、
スケジューラーが Scheduler API または WASScheduler MBean にある再開メソッドを使用して
再開されるまでタスクの実行を停止します。
プロシージャー
- 継続的に障害が起こっているトランザクションの (QOS_ONLYONCE) タスクをキャンセルまたはサスペンドします。
スケジューラーが障害しきい値に達していない場合、この動作が起こらない可能性があります。
データベース・ロックを待っている間、および TaskPending 例外をスローしている間は、
スケジューラー API メソッドまたは WASScheduler MBean オペレーションのキャンセルとサスペンドは、タスクが失敗するか API メソッドが
タイムアウトになるまでブロックします。
これが起こった場合、アプリケーションはキャンセルまたはサスペンド操作を完了するまで再試行します。
- あるいは、WASScheduler MBean の stopDaemon 操作を使用してスケジューラー・デーモンを停止し、タスクが複数回実行するのを避け、停止中にキャンセルまたはサスペンド操作を実行します。
デーモンが停止している間、スケジューラーはタスクを実行しません。
ただし、すべての MBean 操作および API メソッドは引き続き使用可能です。