2 フェーズ・コミットでの X/Open XA インターフェース
このインプリメンテーションでは、X/Open 分散トランザクション処理 (X/Open DTP) 標準 を 2 フェーズ・コミット XA プロトコルとともに使用します。この接続タイプを 使用すると、トランザクション・マネージャーは、作業単位に含まれるすべての作業について、 同期点、ロールバック、コミット、および障害リカバリーの調整を行います。 リソース・マネージャーが管理するキュー、ファイル、およびリソースも対象となります。
X/Open DTP 標準では、リソース・マネージャーが トランザクション・マネージャーによって調整されるという概念の定義が 行われています。DB2®、Informix®、Oracle、 Sybase、Microsoft SQL Server などの リレーショナル・データベースは、典型的なリソース・マネージャーです。 また、 WebSphere MQ も、XA 準拠のリソース・マネージャーの 1 例です。トランザクション・マネージャーは、 このようなリソース・マネージャー間の作業単位の開始と完了を調整します。 そのため、作業単位について、アトミック保全が保証されます。
X/Open DTP モデルには、以下の機能コンポーネントがあります。
- アプリケーション・プログラム (AP)
アプリケーション・プログラムによって、必要なビジネス機能がインプリメント されます。アプリケーション・プログラムで、データベースなどのリソースを使用する 一連の操作が指定されます。アプリケーション・プログラムは 1 つ以上の作業単位を処理し、それぞれの作業単位を別々に コミットまたはロールバックすることができます。
- トランザクション・マネージャー (TM)
トランザクション・マネージャーは、グローバル・トランザクションを管理します。 また、トランザクションをコミットするかロールバックするかの決定を調整して、 トランザクションの原子性を確保します。さらに、必要に応じてリソース・マネージャーの リカバリー活動の調整を行います (コンポーネントの障害が発生した後などに この調整が行われます)。
- リソース・マネージャー (RM)
リソース・マネージャーは、コンピューターの共用リソースの特定部分を管理します。 リソース・マネージャーが提供するサービスによって、数多くの 他のソフトウェアが、時に応じてリソースへのアクセスを要求できるように なります。リソース・マネージャーには、通信リソースを管理するものもあります。
基本 X/Open DTP モデルでは、機能コンポーネントの間に以下のインターフェースがあります。
- アプリケーション・プログラム - リソース・マネージャー間インターフェース。
アプリケーション・プログラム - リソース・マネージャー間インターフェースは、ネイティブ・インターフェースとも呼ばれ、アプリケーション・プログラムが共用リソースにアクセスできるようにします。X/Open DTP モデルでは、リソース・マネージャーとアプリケーション・プログラムの間のネイティブ・インターフェースに、いくつかの制約が課されます。このようなインターフェースの例としては、組み込み SQL や WebSphere MQ API があります。
- アプリケーション・プログラム - トランザクション・マネージャー間インターフェース。
アプリケーション・プログラム - トランザクション・マネージャー間インターフェースは、TX インターフェースとも呼ばれ、アプリケーション・プログラムが作業単位を区切ることができるようにします。 トランザクション・マネージャーには、アプリケーション・プログラムが作業単位を開始したり完了したりできるようにする 機能 (EXEC CICS® SYNCPOINT など) が備わっています。 トランザクション・マネージャーは、アプリケーション・プログラムからの 要求に基づいて作業単位を完了し、関係するリソース・マネージャーや、他の関連トランザクション・マネージャーとの間で 調整を行います。 この調整が完了すると、トランザクション・マネージャーは アプリケーション・プログラムに完了状況を返します。
- トランザクション・マネージャー - リソース・マネージャー間インターフェース。
アプリケーション・プログラム - トランザクション・マネージャー間インターフェースは、XA インターフェースとも呼ばれ、トランザクション・マネージャーがリソース・マネージャーの作業を構造化してグローバル・トランザクションに統合できるようにします。また、グローバル・トランザクションの完了やリカバリーを調整できるようにします。XA の仕様では、各リカバリー・マネージャーが提供し、 トランザクション・マネージャーが使用するルーチンを、xa_routine と定めて います。トランザクション・マネージャーが提供し、リソース・マネージャーが 呼び出すルーチンは、ax_set を形成します。xa_routines や ax_set 関数はすべて、 トランザクション・マネージャーとリソース・マネージャーの間のプライベート・インターフェースを 形成します。