同一トランザクション内での 1 フェーズ・コミット対応リソース および 2 フェーズ・コミット対応リソースへのアクセスの調整

最終参加者サポートにより、 同一のグローバル・トランザクションの中で 1 つの 1 フェーズ・コミット対応リソースを、 任意の数の 2 フェーズ・コミット対応リソースとともに使用できます。同一のトランザクション内で 1 フェーズ・コミット・リソースを含む複数の対話が可能ですが、そのようなリソースを関与させることができるのは 1 つだけです。

トランザクションのコミット時には、2 フェーズ・コミット・プロトコルを使用して、 2 フェーズ・コミットのリソースがまず準備され、これが正常に完了したら、次に 1 フェーズ・コミットのリソースが 呼び出されてコミットされます。次に、1 フェーズ・コミットの リソースの応答に応じて、2 フェーズ・コミットのリソースがコミット またはロールバックされます。

注: グローバル・トランザクションが、 すべて WebSphere® Application Server バージョン 6.1 以降で 実行されている 複数のアプリケーション・サーバーに分散されている場合は、最終参加者サポートを利用すれば、 限られた数のシナリオにおいて、同一トランザクション内の 1 つの 1 フェーズ・コミット対応リソースと 任意の数の 2 フェーズ・コミット対応リソースを調整することができます。
  • メイン・シナリオでは、1 フェーズ・コミット・リソース・プロバイダーには、 トランザクションが開始されたアプリケーション・サーバー・プロセス (「トランザクション・ルート」 サーバー) でアクセスすることができます。

    このシナリオでは、最終参加者サポートは、 同一トランザクション内の 1 つの 1 フェーズ・コミット対応リソースと任意の数の 2 フェーズ・コミット対応リソースを 調整することができます。

  • 異なるアプリケーション・サーバー (「トランザクション従属」サーバー) で、 トランザクションが開始されたサーバーから 1 フェーズ・コミット・リソース・プロバイダーに アクセスする場合があります (例えば、EJB 実装が 1 フェーズ・コミット・リソース・プロバイダー にアクセスするリモート EJB インターフェースでトランザクションが起動された結果として)。

    このシナリオでは、通常、トランザクションはコミットすることができません。 トランザクション従属サーバーに登録されている 1 フェーズ・コミット・リソース を (グローバル・トランザクションの一部として) コミットできるようにするために、 トランザクション・サービスは、トランザクション・ルートから従属サーバーに 調整の責任を委任する必要があります。 このことは、トランザクション・ルート・サーバーに登録されている リソースが他にない場合にだけ発生します。

最終参加者サポートによって、トランザクションへのヒューリスティックの結果のリスクが増大します。 すなわち、トランザクション・マネージャーは、すべてのリソースが同じ方向で (コミットまたは ロールバックのいずれか) 完了したのかどうかが分からなくなくなります。このため、 アプリケーションで同一トランザクション内の 1 フェーズ・コミット対応リソースと 2 フェーズ・コミット対応リソースへの アクセスを調整できるようにするには、ヒューリスティック障害を受け入れる、すなわちヒューリスティックな結果のリスクが 増大することを受け入れるように、アプリケーションを構成します。

ヒューリスティックの結果は、トランザクション・サービス (JTS) が 1 フェーズ・コミット・リソースに対して行った 1 フェーズ・コミットのフローからの応答を受信しない場合に発生します。この状態では、 トランザクション・サービスは、1 フェーズ・コミット・リソースの変更がコミットされたのかロールバックされたのかを 判別できず、そのため、グローバル・トランザクションの結果が正しくても、それを信頼して他の 2 フェーズ・コミット・ リソースに対して適用することができません。

アプリケーション・サーバーのトランザクション・サービスがヒューリスティック障害を 受け入れるように構成することも、アプリケーションが個別にヒューリスティック障害を受け入れるように 構成することもできます。アプリケーションは、そのアセンブル時またはデプロイ後に、 個別に構成できます。

アプリケーション・サーバーのトランザクション・サービスを、 それが 1 フェーズ・コミット・リソースをコミットしようとしていることを記録するかしないかを示すように構成できます。これによってヒューリスティック障害が減少するわけではありませんが、1 フェーズ中にアプリケーション・サーバーに何らかの障害が発生し、その後にリカバリーが行われた場合に、1 フェーズ・コミット・リソースがコミットするよう要求されたのかどうかが確実に分かります。
  • 1 フェーズ・コミット・リソースがコミットするよう要求された場合は、アクティビティー・ログに ヒューリスティックの結果が報告されます。
  • 1 フェーズ・コミット・リソースがコミットを要求されなかった場合は、トランザクションは矛盾なく ロールバックされています。

1 フェーズ・コミットおよび 2 フェーズ・コミットの両方のリソースを含むトランザクションの例外

1 フェーズ・コミット・リソースおよび 2 フェーズ・コミット・リソ ースが関係するトランザクションによってスローされる可能性のあ る例外は、2 フェーズ・コミット・リソースのみが関係するトランザク ションによってスローされる可能性のある例外と同じです。

発生する可能性がある例外は、WebSphere Application Serverインフォメーション・センターのアプリケーション・プログラミング・インターフェース (API) 参照情報にリストされています。


トピックのタイプを示すアイコン 概念トピック



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