WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

トランザクションおよびスケジューラー

スケジューラーは、デフォルトでは、単一のグローバル・トランザクションでタスクを実行します。 サービス品質 QOS_ONLYONCE または QOS_ATLEASTONCE を使用して、タスクを単一の作業単位として一度だけ実行するか、独立したトランザクションとして実行するかを指定できます。

タスク実行の際のトランザクション動作

スケジューラーは、デフォルトでは単一のグローバル・トランザクションでタスクを実行するので、このトランザクションは、タスクが完了するか失敗するまでオープンになっています。トランザクションに含まれるリソースは、何十分または何時間にも及ぶような長時間タスクが稼働している場合、さまざまなタイムアウトやタスクのスレッドが ハングとして識別されます。

[バージョン 6.0.2] TaskInfo.setQOS メソッドは、タスクが少なくとも 1 つは稼働するというサービス品質の低下を許可します。 タスクを TaskInfo.QOS_ATLEASTONCE に設定した場合、タスクが稼働している間中トランザクションをオープンし続けません。 スケジューラーがタスクの結果を更新できない場合、このサービスの品質がすでにトランザクションでないため、タスクは複数回にわたって開始する可能性があります。 このサービスの品質はバッチ・ジョブに最適です。 ビジネス・ロジック内のチェックポイントで QOS_ATLEASTONCE を使用してください。それにより、タスクが回復する必要がある場合、ビジネス・ロジックは次のチェックポイントで継続できます。 詳しくは、com.ibm.websphere.scheduler.TaskInfo の API 文書を参照してください。

QOS_ONLYONCE

スケジュール済みタスクは、QOS_ONLYONCE サービスの品質を使用した場合、一度だけ正常に実行できます。 この動作が行われるのは、タスク内で行われるすべての作業を単一の作業単位としてグループ化されるためです。 各タスクの実行時に、以下のイベントが、 単一のグローバル・トランザクション・コンテキスト内で発生します。
  1. タスクを作成したアプリケーションのコンテキストが、スレッドに適用される。
  2. グローバル・トランザクション・コンテキストが開始される。
  3. 次の実行時刻および開始時刻が、UserCalendar Bean または DefaultUserCalendar を使用して計算される。
    注: TaskInfo.EXECUTION_DELAYEDUPDATE オプションで TaskInfo.setTaskExcecutionOptions メソッドを使用した場合、このステップはレコードの更新後に発生する。
  4. タスク・データベースのタスク・レコードが、データベース内で次のタスクの状態を使用して更新されるか、またはタスクが完了し、タスクの自動パージ設定が true の場合は、削除される。
  5. タスク・データベースのレコードが、データベース内で次のタスクの状態を使用して更新されるか、またはタスクが完了し、タスクの自動パージ設定が true の場合は、削除される。 EXECUTION_DELAYEDUPDATE オプションを使用した場合、データベースはタスクの次の状態を反映せず、 TaskStatus.RUNNING 状態設定での現在の状態を反映する。
  6. NotificationSink Bean が設定されている場合、FIRING 通知が実行される。
  7. BeanTaskInfo または MessageTaskInfo オブジェクトがスタートする。
  8. タスクが失敗し、NotificationSink Bean が設定されている場合、FIRE_FAILED 通知が個別のトランザクションで実行される。
  9. タスクの NotificationSink Bean が設定されている場合、さまざまな通知が 要求どおり実行される。
  10. タスクに EXECUTION_DELAYEDUPDATE オプションが使用されると、データベースはタスクの次の状態で 2 度目の更新が行われる。
  11. グローバル・トランザクションがコミットされる。
タスクに属するすべてのイベントは単一のグローバル・トランザクション・コンテキスト内で実行されるため、 トランザクション関連のエラーが発生しないようにするには、以下の点を考慮する必要があります。
  • タスクのトランザクションに関与する各リソースが、2 フェーズ XA に対応していること。

    このようなリソースとしては、 スケジューラー用に構成された JDBC データ・ソース、MessageTaskInfo オブジェクトによって使用される JMS サービス、 およびトランザクション設定が「必要」である UserCalendar、TaskHandler、または NotificationSink Bean のいずれかの中で使用されるリソースなどがあります。

  • トランザクションを作成したアプリケーションの最終参加者サポートが使用可能になっている場合、1 つのリソースを 1 フェーズにできる。 アセンブリー・ツールを使用して、最終参加者サポートを使用可能にします。管理コンソールから最終参加者サポートを使用可能にすることもできます。 詳しくは、最終参加者サポート拡張設定のトピックを参照してください。

すべての予期しない例外は、アクティビティー・ログに記録され、 タスクのグローバル・トランザクション に関与するすべてのイベントがロールバックされます。 このイベントとしては、 タスクのデータベース・レコードの変更などがあります。この変更が行われると、スケジューラー・デーモンが次のポーリング・サイクルの間にデータベースをポーリングするときに、 タスクが強制的に再度実行されます。 UserCalendar、TaskHandler、および NotificationSink Bean では、Bean のトランザクション設定を「新規必要」に構成して、グローバル・トランザクションには関与しないようにできます。

QOS_ATLEASTONCE

QOS_ATLEASTONCE サービス品質を使用するスケジュール済みタスクは、単一のトランザクション・コンテキストを持っていません。 この場合、各カレンダーの計算、イベント通知、およびデータベース更新は 独立したトランザクションで発生します。
  1. タスクを作成したアプリケーションのコンテキストが、スレッドに適用される。
  2. タスクのデータベース・レコードはタスクが実行している状態で更新される。
  3. UserCalendar、NotificationSink Bean が呼び出される。
  4. BeanTaskInfo または MessageTaskInfo が開始される。
  5. 結果通知が送信される。
  6. 実行状態が書き込まれてからタスクに変更がない場合、データベースはタスクの次の状態で更新される。

実行状態がデータベースに書き込まれた後、さらに結果が書き込まれる前に失敗が生じた場合、 タスクは複数回実行する可能性があります。

タスク実行中はグローバル・トランザクションが使用できないので、QOS_ATLEASTONCE を使用した場合、すべての NotificationSink、UserCalendar および TaskHandler Bean はトランザクション (TX_MANDATORY) を要求することができません。 EJB コンポーネントは、「必要」または「新規必要」コンテナー管理のトランザクション、または Bean 管理のトランザクションを使用します。

スケジューラー API メソッド、または WASScheduler MBean オペレーション使用中のトランザクションの動作

すべてのスケジューラー・ インターフェース・メソッドは、 単一のグローバル・トランザクション・コンテキスト内で使用されます。 グローバル・トランザクション・コンテキストが、create()、suspend()、resume()、cancel()、および purge() メソッドの実行時に既にスレッドにある場合は、続いて、既存のグローバル・トランザクションが 使用されます。 それ以外の場合は、新規のグローバル・トランザクションが開始されます。

スケジューラー・インターフェース・メソッドが、呼び出し元のグローバル・トランザクションで使用され、予期しないエラーが発生した場合、 その後、このトランザクションは、ロールバックするようマークされます。 例外が宣言済み例外の場合、この例外は、呼び出し元に再実行依頼され、 トランザクションは、呼び出し元によってコミットまたはロールバックされるよう、そのままにしておかれます。

このメソッドが独自のグローバル・トランザクションを開始して例外が発生した場合、 その後、トランザクションはロールバックされ、例外が呼び出し元に再度スローされます。




関連タスク
スケジューラーへのタスクのサブミット
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/scheduler/concepts/csch_tasktransaction.html