4.1.2 XAインタフェース
TPBrokerはXAインタフェースのすべての関数をサポートしていますが,マイグレーション機能についてはサポートしていません。
(1) リソースマネージャとの連携
TPBrokerとXAインタフェースを使用して,DBMSなどのリソースマネージャと連携し,トランザクションを処理できます。リソースマネージャと連携する場合は,「7.4.1 XAインタフェースをサポートしたリソースマネージャの場合」に示す手順に従ってください。
(2) マルチスレッド対応
TPBrokerのXAインタフェースサポートはマルチスレッドに対応しているため,マルチスレッド環境でXAインタフェースによってリソースマネージャと連携できます。TPBrokerはシングルスレッド環境をサポートしていません。リソースマネージャによってはXAライブラリがマルチスレッドに対応していないものがあり,この場合,TPBrokerと連携できません。
マルチスレッド環境でXAインタフェースによってリソースマネージャと連携する場合,リソースマネージャによって,次のような違いがあります。
-
プロセスごとにxa_open/xa_close関数を発行する。
-
スレッドごとにxa_open/xa_close関数を発行する。
TPBrokerでは,リソースマネージャ定義set_xa_open_scope(xa_open発行単位)およびset_xa_open_timing(xa_open発行タイミング)を設定することでxa_openおよびxa_close関数の発行のタイミングを変更し,リソースマネージャとXAインタフェースで連携できるようにしています。
(3) OTSとのモデルインタオペラビリティ
OTSインタフェースで作成されたアプリケーションプログラムを,XAインタフェースを使用してリソースマネージャと連携させることができます。ただし,OTSのアプリケーションモデルは,フラットトランザクション,間接コンテキスト管理,および暗黙的プロパゲーションを使用したものに限ります。
したがって,XAインタフェースを使用してリソースマネージャと連携する場合は,ネスティッドトランザクションは使用できません。また,直接コンテキスト管理および明示的プロパゲーションを使用する場合は,トランザクションをスレッドに関連づけてから(Currentオブジェクトのresumeオペレーションを発行してから)リソースマネージャにアクセスする必要があります。