3.1.7 XAリソースサービスによるトランザクション制御
XAリソースサービスとは,OpenTP1と次に示す連携先との間で2相コミットによるトランザクション連携を行うための機能です。
-
J2EEで動作するアプリケーションサーバ
-
.NET Frameworkアプリケーション(.NET Framework上で動作するアプリケーション)
OpenTP1と.NET Frameworkアプリケーションとの間で連携する機能を,MSDTC連携機能といいます。MSDTC連携機能を使用すると,MSDTCと連携できるリソースとOpenTP1上のリソースとの間でトランザクション連携ができます。MSDTC連携機能を使用するためには,XAリソースサービス定義のxar_msdtc_useオペランドにYを指定する必要があります。
ここでは,XAリソースサービスを使ったトランザクション制御の概要について説明します。操作方法については,マニュアル「OpenTP1 運用と操作」のXAリソースサービスの記述を参照してください。また,XAリソースサービスのトレース情報の詳細については,「5.3.6(5) XAR性能検証用トレース」,および「5.3.6(9) XARイベントトレース」を参照してください。
なお,J2EEで動作するアプリケーションサーバと.NET Frameworkアプリケーションで機能差がない場合,XAリソースサービスで連携するアプリケーションサーバと呼びます。
(1) XAリソースサービスの概要
XAリソースサービスの主な機能は,XAリソースサービスで連携するアプリケーションサーバから渡されたXID(トランザクションの識別子)のステータスを管理し,OpenTP1のXIDとマッピングすることです。MSDTC連携機能を使用する場合は,RI(トランザクション回復情報)も管理します。RIとは,トランザクション決着処理で障害が発生した場合にトランザクションを回復するため情報で,トランザクション決着処理時にMSDTCが作成します。これらのトランザクションの状態は,必要に応じてOpenTP1ファイルシステムに記録されます。
- 注
-
XAリソースサービスの「XA」は,OpenTP1がDBMSに対してトランザクション決着の指示を行うXA連携機能の「XA」とは異なります。
(a) J2EEで動作するアプリケーションサーバと連携する場合
J2EEで動作するアプリケーションサーバは,JCAに準拠したuCosminexus TP1 ConnectorまたはCosminexus TP1 Connectorを経由してトランザクションを制御します。OpenTP1では,J2EEで動作するアプリケーションサーバからのトランザクション要求をrapサーバで受信し,XAリソースサービスを使用してトランザクション処理を行います。
J2EEで動作するアプリケーションサーバと連携する場合のトランザクション制御の流れを次の図に示します。
(b) .NET Frameworkアプリケーションと連携する場合
.NET Frameworkアプリケーションは,MSDTCを使用してトランザクションを制御し,Connector .NETを経由してOpenTP1へのトランザクション指示をします。OpenTP1では,.NET Frameworkアプリケーションからのトランザクション指示をrapサーバで受信し,XAリソースサービスを使用してトランザクション処理を行います。
.NET Frameworkアプリケーションと連携する場合のトランザクション制御の流れを次の図に示します。
(2) JCAのXAリソースインタフェース
J2EEで動作するアプリケーションサーバからOpenTP1に対するトランザクション制御は,JCAに従って行われます。JCAとは,アプリケーションサーバとリソースアダプタとの間を接続するための標準仕様のことです。
JCAに従うことで,アプリケーションサーバは,DBMSやほかのリソースアダプタを扱うのと同様に,OpenTP1のトランザクションを制御できます。また,OpenTP1は,さまざまなアプリケーションサーバ上で標準リソースアダプタとして動作できます。
JCAに従ったトランザクション制御のインタフェースには,次の二つがあります。
-
XAリソースインタフェース
-
ローカルトランザクションインタフェース
各インタフェースの詳細については,JCAのドキュメントを参照してください。
XAリソースサービスは,OpenTP1上で,XAリソースインタフェースを使用したトランザクション制御を受け付けるための機能です。
(3) XAリソースサービスの前提機能
XAリソースサービスを使用するためには,リモートAPI機能と,次に示す製品を使用する必要があります。
- J2EEで動作するアプリケーションサーバと連携する場合
-
-
TP1/Client/J
-
uCosminexus TP1 ConnectorまたはCosminexus TP1 Connector
-
- .NET Frameworkアプリケーションと連携する場合
-
-
Client .NET
-
Connector .NET
-
なお,.NET Frameworkアプリケーションと連携する場合,TP1/Client for .NET Framework構成定義の<extendLevel要素>のvalue属性には00000001を指定することをお勧めします。<extendLevel要素>のvalue属性に00000001を指定すると,XARファイルのレコード長が不足したことによってトランザクションの決着処理に失敗した場合に,KFCA32045-Eメッセージにトランザクション要求元のIPアドレスを表示させることができます。
(a) リモートAPI機能
リモートAPI機能は,クライアント側が発行したAPIを,OpenTP1がサーバ側に転送してサーバ側のプロセスで代理実行する機能です。また,APIを代理実行するサーバをrapサーバといいます。
XAリソースサービスは,リモートAPI機能を使用したrapサーバ上で動作します。XAリソースサービスで連携するアプリケーションサーバからのトランザクション要求は,すべてrapサーバ上で管理します。そのため,XAリソースサービスを使用する場合は,rapサーバをあらかじめ起動しておく必要があります。rapサーバが起動していない場合,XAリソースサービスで連携するアプリケーションサーバからのトランザクション要求はすべてエラーとなります。
OpenTP1は,リモートAPIを要求したUAPとrapサーバとの間に,常設コネクションという論理的な通信路を設定します。常設コネクションのスケジュール方式には,スタティックコネクションスケジュールモードとダイナミックコネクションスケジュールモードの2種類があります。XAリソースサービスは,どちらのモードを使用しても動作します。
リモートAPI機能の詳細については,「3.7 リモートAPI機能」を参照してください。
(b) TP1/Client/JまたはClient .NET
TP1/Client/Jは,J2EEで動作するアプリケーションサーバからのトランザクション要求をOpenTP1に伝える際に経由する製品です。
Client .NETは,.NET Frameworkアプリケーションからのトランザクション要求をOpenTP1に伝える際に経由する製品です。
XAリソースサービスを使用する場合は,リモートAPI機能が前提となります。したがって,TP1/Client/JまたはClient .NETのRPCによるサービス要求方式は,リモートAPI機能に限られます。また,リモートAPI機能を使用するときのコネクトモードは,オートコネクトモードに限られます。
TP1/Client/JまたはClient .NETのRPCのサービス呼び出し形態には,同期応答型,非応答型,連鎖型およびトランザクションを引き継がない形態の4種類があります。XAリソースサービスは,どの形態も使用できます。
通常のRPCでは,トランザクション要求に対する窓口となるOpenTP1のホスト名を複数指定できますが,XAリソースサービスを使用する場合,XAリソースサービスで連携するアプリケーションサーバからのトランザクション要求に対する窓口となるOpenTP1のホスト名は,一つだけ指定できます。
XAリソースサービスで使用できるTP1/Client/JまたはClient .NETの機能を次の表に示します。
TP1/Client/JまたはClient .NETの機能 |
方式 |
使用の可否 |
---|---|---|
RPCのサービス要求方式 |
リモートAPI機能 |
○ |
スケジューラダイレクト機能 |
× |
|
ネームサービス機能 |
× |
|
コネクトモード |
オートコネクトモード |
○ |
非オートコネクトモード |
× |
|
RPCのサービス呼び出し形態 |
同期応答型 |
○ |
非応答型 |
○ |
|
連鎖型 |
○ |
|
トランザクションを引き継がない形態 |
○ |
|
窓口となるOpenTP1ホスト名の指定(dchostオペランドで指定) |
一つだけ指定できる |
○ |
ユーザデータの圧縮 |
データ圧縮機能 |
○ |
TP1/Client/Jの各機能の詳細については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を,Client .NETの各機能の詳細については,マニュアル「TP1/Client for .NET Framework 使用の手引」を参照してください。
(c) uCosminexus TP1 ConnectorまたはCosminexus TP1 Connector
uCosminexus TP1 ConnectorまたはCosminexus TP1 Connectorは,OpenTP1の通信およびトランザクションを,JCAに従ったリソースアダプタとして制御するための製品です。J2EEで動作するアプリケーションサーバは,uCosminexus TP1 ConnectorまたはCosminexus TP1 Connectorに対するトランザクション制御を行うことで,OpenTP1に2相コミットを伝えます。
XAリソースサービスを使用してOpenTP1とJ2EEで動作するアプリケーションサーバと連携するときの注意事項については,uCosminexus TP1 ConnectorまたはCosminexus TP1 Connectorのドキュメントを参照してください。
(d) Connector .NET
Connector .NETは,.NET Framework環境からOpenTP1への通信およびトランザクションを制御する製品です。MSDTC連携機能では,Connector .NETはMSDTCのトランザクションに参加するリソースマネジャとして機能します。MSDTCは,Connector .NETに対するトランザクション制御を行うことで,OpenTP1に2相コミットを伝えます。
XAリソースサービスを使用してOpenTP1と.NET Frameworkアプリケーションと連携するときの注意事項については,マニュアル「TP1/Connector for .NET Framework 使用の手引」を参照してください。
(4) タイマ監視機能
XAリソースサービスで連携するアプリケーションサーバからの要求が停止した場合や,業務プログラムの処理が滞留した場合,各種タイマ監視機能を使用してトランザクション処理を打ち切ることができます。
XAリソースサービスで連携するアプリケーションサーバ,rapサーバ,およびSPPのタイマ監視機能の範囲を次の図に示します。
図中のタイマ監視t1〜t9の対象と,指定するオペランドを次の表に示します。
区間 |
タイマ監視の対象 |
J2EEで動作するアプリケーションサーバ※ |
.NET Frameworkアプリケーション※ |
OpenTP1 |
---|---|---|---|---|
t1 |
問い合わせ間隔の監視 |
TP1/Client/J環境定義のdccltinquiretimeオペランド |
TP1/Client for .NET Framework構成定義の<rapService>要素のinquireTime属性 |
rapリスナーサービス定義のrap_inquire_timeオペランド |
t2 |
メッセージ送受信の監視 |
TP1/Client/J環境定義のdcwatchtimオペランド |
TP1/Client for .NET Framework構成定義の<rpc>要素のwatchTime属性 |
rapリスナーサービス定義,ユーザサービスデフォルト定義,またはシステム共通定義のwatch_timeオペランド |
t3 |
トランザクションブランチの処理の監視 |
TP1/Client/J環境定義のdcclttrexptmオペランド |
TP1/Client for .NET Framework構成定義の<xarTransaction>要素のexpireTime属性 |
rapリスナーサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義のtrn_expiration_timeオペランド |
t4 |
アイドル状態のトランザクションブランチの監視 |
− |
− |
XAリソースサービス定義のxar_session_timeオペランド |
t5 |
トランザクションブランチの処理の完了監視 |
− |
− |
rapリスナーサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義のtrn_completion_limit_timeオペランド |
t6 |
トランザクションブランチの処理の監視 |
− |
− |
ユーザサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義のtrn_expiration_timeオペランド |
サービス関数の処理の監視 |
− |
− |
ユーザサービス定義,ユーザサービスデフォルト定義のservice_expiration_timeオペランド |
|
t7 |
トランザクションブランチの処理の完了監視 |
− |
− |
ユーザサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義のtrn_completion_limit_timeオペランド |
t8 |
トランザクション同期点処理時の最大通信待ち時間 |
TP1/Client/J環境定義のdcclttrwatchtimeオペランド |
TP1/Client for .NET Framework構成定義の<transaction>要素のinternalWatchTime属性 |
rapリスナーサービス定義のtrn_watch_timeオペランド |
t9 |
− |
− |
ユーザサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義のtrn_watch_timeオペランド |