11.2. トランザクションの概念
11.2.3. トラザクションコーディネーターまたはトランザクションマネージャー
JBoss EAP のトランザクションでは、トランザクションコーディネーターとトランザクションマネー
ジャー™ という言葉は、ほとんど同じことを意味します。トランザクションコーディネーターという言 葉は通常、分散 JTS トランザクションのコンテキストで使用されます。
Jakarta Transactions トランザクションでは、TM は JBoss EAP 内で実行され、2 フェーズコミットの プロトコルでトランザクションの参加者と通信します。
TM はトランザクションの参加者に対して、他のトランザクションの参加者の結果に従い、データをコ ミットするか、ロールバックするか指示します。こうすることで、確実にトランザクションが ACID 標 準に準拠するようにします。
トランザクションの参加者
トランザクションの ACID プロパティー 2 フェーズコミットプロトコル
11.2.4. トランザクションの参加者
トランザクションの参加者は、状態をコミットまたはロールバックできるトランザクション内のリソー スであり、一般的にデータベースまたは JMS ブローカーを生成します。これは通常データベースや
Jakarta Messaging ブローカーです。ただし、トランザクションインターフェースを実装することによ
り、アプリケーションコードがトランザクションの参加者として動作することもできます。トランザク ションの各参加者は、状態をコミットまたはロールバックできるかどうかを独自に決定します。そし て、すべての参加者がコミットできる場合のみ、トランザクション全体が成功します。コミットできな い参加者がある場合は、各参加者がそれぞれの状態をロールバックし、トランザクション全体が失敗し ます。TM は、コミットおよびロールバック操作を調整し、トランザクションの結果を判断します。
11.2.5. Jakarta Transactions について
Jakarta Transactions は Jakarta EE Spec 一部です。Jakarta Transactions 1.3 Specification で定義され ています。
Jakarta Transactions の実装は、JBoss EAP アプリケーションサーバーの Narayana プロジェクトに含 まれる TM を使用して実行されます。TM により、単一のグローバルトランザクションを使用してアプ リケーションがさまざまなリソース (データベースや Jakarta Messaging ブローカーなど) を割り当てで きるようになります。グローバルトランザクションは XA トランザクションと呼ばれます。一般的に、
このようなトランザクションには XA 機能を持つリソースが含まれますが、XA 以外のリソースがグ ローバルトランザクションに含まれることもあります。非 XA リソースを XA 対応リソースとして動作 させるのに役に立つ複数の最適化があります。詳細は、「1 フェーズコミット (1PC) の LRCO 最適 化」を参照してください。
本書では、Jakarta Transactions という用語は以下の 2 つを指します。
1. Jakarta EE 仕様で定義されている Jakarta Transactions。
2. TM がトランザクションをどのように処理するかを示します。
TM は Jakarta Transactions トランザクションモードで動作し、データはメモリーで共有されます。ま
た、トランザクションコンテキストはリモート Jakarta Enterprise Beans 呼び出しによって転送されま す。管理トランザクションモードでは、データは CORBA (Common Object Request Broker
Architecture) メッセージを送信して共有され、トランザクションコンテキストは IIOP 呼び出しによっ
て転送されます。複数の JBoss EAP サーバー上におけるトランザクションの分散は両方のモードでサ ポートされます。
分散トランザクション
XA データソースおよび XA トランザクション
11.2.6. JTS について
JTS は Object Transaction Service (OTS) から Jakarta へのマッピングです。Jakarta EE アプリケー
ションは Jakarta Transactions を使用してトランザクションを管理します。その後、トランザクション
マネージャーが JTS モードに切り替わると、Jakarta Transactions は Object Transactions Service トラ ンザクション実装と対話します。JTS は IIOP プロトコル上で動作します。JTS を使用するトランザク ションマネージャーは Object Request Broker (ORB) と呼ばれるプロセスと Common Object Request
Broker Architecture (CORBA) と呼ばれる通信標準を使用してお互いに通信します。詳細は、JBoss
EAP『設定ガイド』の「ORB 設定設定」を参照してください。
アプリケーションの観点で Jakarta Transactions を使用すると、JTS トランザクションは Jakarta
Transactions トランザクションと同じように動作します。
注記 注記
JBoss EAP に含まれる JTS の実装は、分散トランザクションをサポートします。完全準
拠の JTS トランザクションとの違いは、外部のサードパーティー ORB との相互運用性
です。この機能は、JBoss EAP ではサポートされません。サポートされる設定では、複
数の JBoss EAP コンテナーでのみトランザクションが分散されます。
11.2.7. XML トランザクションサービス
XML トランザクションサービス (XTS) コンポーネントは、ビジネストランザクションのプライベート およびパブリック web サービスの調整をサポートします。XTS を使用すると、複雑なビジネストラン ザクションを制御され信頼できる状態で調整できます。XTS API は WS-Coordination、WS-Atomic Transaction、および WS-Business Activity プロトコルを基にしたトランザクションコーディネーション モデルをサポートします。
11.2.7.1. XTS
によって使用されるプロトコルの概要 によって使用されるプロトコルの概要
WS-Coordination (WS-C) 仕様は、異なるコーディネーションプロトコルがプラグインできるようにす
るフレームワークを定義し、クライアント、サービス、および参加者の間で作業を調整します。
WS-Transaction (WS-T) プロトコルは、WS-C によって提供されるコーディネーションフレームワーク
を利用する WS-Atomic Transaction (WS-AT) および WS-Business Activity (WS-BA) の 2 つのトランザ クションコーディネーションプロトコルで構成されます。WS-T は、既存の従来のトランザクション処 理システムを統一するために開発され、これらのシステム間で確実に通信が行われるようにします。
11.2.7.2. Web Services-Atomic Transaction (WS-AT)
プロセス プロセス
アトミックトランザクション (AT) は、ACID セマンティックが適切である場合に短期間の対話をサポー トするよう設計されています。AT の範囲内では、web サービスは通常 WS-T の制御下でブリッジング を用いてデータベースやメッセージキューなどの XA リソースにアクセスします。トランザクションが 終了すると、参加者は AT の決定結果を XA リソースに伝搬し、各参加者によって適切なコミットまた はロールバックが実行されます。
11.2.7.2.1. アトミックトランザクションアトミックトランザクション (AT) プロセスプロセス
1. AT を開始する際、クライアントは最初に WS-T をサポートする WS-C Activation Coordinator web サービスを見つけます。
2. クライアントは、http://schemas.xmlsoap.org/ws/2004/10/wsat をコーディネーション型とし
2. クライアントは、http://schemas.xmlsoap.org/ws/2004/10/wsat をコーディネーション型とし て指定して、WS-C CreateCoordinationContext メッセージをサービスに送信します。
3. クライアントは適切な WS-T コンテキストをアクティベーションサービスから受け取ります。
4. CreateCoordinationContext メッセージの応答であるトランザクションコンテキストの CoordinationType 要素は、WS-AT ネームスペース
http://schemas.xmlsoap.org/ws/2004/10/wsat に設定されています。また、参加者を登録でき るアトミックトランザクションコーディネーターエンドポイントである WS-C Registration
Service への参照も含まれます。
5. クライアントは通常、続いて Web サービスの呼び出しを行い、Web サービスによるすべての 変更をコミットまたはロールバックしてトランザクションを完了します。完了できるようにす るには、エンドポイントがコーディネーションコンテキストで返された登録サービスに登録 メッセージを送信し、クライアントを完了プロトコルの参加者として登録する必要がありま す。
6. クライアントを登録したら、クライアントアプリケーションは web サービスと対話してビジネ スレベルの作業を達成します。クライアントは、ビジネス web サービスが呼び出されるごと に、トランザクションコンテキストを SOAP ヘッダーブロックの挿入し、各呼び出しがトラン ザクションによって暗黙的にスコープ付けされます。WS-AT 対応 web サービスをサポートす るツールキットは、SOAP ヘッダーブロックで見つかったコンテキストをバックエンド操作と 関連付ける機能を提供します。これにより、web サービスによる変更がクライアントと同じト ランザクションの範囲内で行われるようにし、トランザクションコーディネーターによるコ ミットまたはロールバックの対象になるようにします。
7. 必要なアプリケーションの作業がすべて完了したら、クライアントはサービス状態の変更を永 続する目的でトランザクションを終了することができます。完了参加者は、トランザクション をコミットまたはロールバックするようコーディネーターに指示します。コミットまたはロー ルバック操作が完了すると、トランザクションの結果を示すために状態が参加者に返されま す。
詳細は、『Naryana Project Documentation』の「WS-Coordination」を参照してください。
11.2.7.2.2. Microsoft .NET クライアントとのクライアントとの WS-AT の相互運用性の相互運用性
WS-AT 仕様の .NET 実装の違いにより、xts サブシステムと Microsoft .NET クライアントとの通信に問 題が発生することがあります。WS-AT 仕様の .NET 実装はすべての呼び出しが非同期になるよう強制し ます。
.NET クライアントとの相互運用性を有効にするため、JBoss EAP の xts サブシステムでは非同期登録
のオプションを利用できます。XTS 非同期登録はデフォルトでは無効になっており、必要な場合のみ有 効にする必要があります。
非同期登録を有効にして .NET クライアントとの WS-AT の相互運用性を維持するには、以下の管理 CLI コマンドを実行します。
/subsystem=xts:write-attribute(name=async-registration, value=true)
11.2.7.3. Web Services-Business Activity (WS-BA)
プロセス プロセス
Web Services-Business Activity (WS-BA) は、既存のビジネスプロセスおよびワークフローシステムが プロプライエタリーメカニズムをラップし、実装およびビジネス境界全体で相互運用できるようにす る、web サービスアプリケーションのプロトコルを定義します。
要求時のみ参加者が状態をトランザクションコーディネーターに伝える WS-AT プロトコルモデルとは