推定アボート・モードは、分散トランザクションがコミットを開始する前に障害が発生したときにアクテ
ィブになります。
幾つかのサーバーにわたる分散トランザクションがある場合、
トランザクション・ロックはその作業に関与するリソース・マネージャーによって保持されます。
分散トランザクションがコミットを開始する前に失敗が発生すると、WebSphere
Application Server for z/OS およびリソース・マネージャーは推定アボート・モードに入ります。
このモードでは、リソース・マネージャーはトランザクションを打ち切ります (ロールバック)。
- サーバー障害または通信障害の影響は、障害時に作業を実行していたサーバーによって変わります。
- 分散トランザクション・ツリーの従属枝をロールバックするには、OTS タイムアウトが必要になることがあります。
例: OTS タイムアウトが必要となる一般的なケースは
、同じサーバーでセッション Bean を実行しているサーバー B Web クライアント がある場合です。
そのセッション Bean は サーバー C および D のエンティティー Bean に対して作業を実行します。すべてのサーバー
が、同じ分散されたグローバル・トランザクションに関与しています。
セッション Bean が未了であると (つまり、まだコミットを開始していません)、突然、サーバー B が失敗しま
す。
サーバー C および D はさらなる作業または 2 フェーズ・コミット・プロトコルの開始を待ちますが、この状態では、
トランザクション・ロックはまだリソース・マネージャーによって保持されています。
このため、各サーバーの役割は以下のようになります。
- サーバー A: サーブレット/JavaServer Page の実行
- サーバー B: セッション Bean にアクセス
- サーバー C: エンティティー Bean にアクセス
- サーバー D: エンティティー Bean にアクセス
タイムアウトが起こると、失敗の時点でセッション Bean
が未了であるため、WebSphere Application Server はトランザクション枝をロールバックします。
ローカル・リソース・マネージャーが関与する場合は、RRS は、ローカル・リソース・マネージャーが呼び出され
て推定アボート処理を実行するようにします。
リカバリー時に、RRS は必ずリカバリーが正確に行われるようにリソース・マネージャーと連動します。
作業が未了の場合に、失敗が発生すると、RRS はローカル UR に関与しているリソース・マネージャーにロールバックするよう指示します。
WebSphere Application Server for z/OS は常に、行う必要のあるリカバリーがあると想定します。
サーバーは、立ち上がるたびに、稼働しているモードに応じた作業を行います。
- サーバーが再始動/リカバリー・モードで稼働している場合、
WebSphere Application Server for z/OS は必要なリカバリーがないかを確認します。
リカバリーが必要な場合、WebSphere Application Server for z/OS はリカバリーを完了しようと試み、成功または終了します。
- サーバーが正常に稼働している場合は、再始動/リカバリー・トランザクションが新規作業に取り掛かる前に完了する必要はありません。
サーバーは、再始動作業の内容を把握すると、新規作業項目に取り掛かります。
再始動/リカバリー・トランザクションの処理は、
新規作業項目の処理とともに継続します。