XAリソースサービスは,TP1/Client/JまたはClient .NETからのトランザクション要求種別に従って,トランザクションの管理を開始したり終了したりします。また,TP1/Client/JまたはClient .NETから渡されるXAリソースサービスで連携するアプリケーションサーバのXID(トランザクション識別子)と,OpenTP1が管理しているXIDとを対応づけて,トランザクション情報を共用メモリ上で管理します。MSDTC連携機能を使用する場合は,RI(トランザクション回復情報)も管理します。RIとは,トランザクション決着処理で障害が発生した場合にトランザクションを回復するため情報で,トランザクション決着処理時にMSDTCが作成します。これらのトランザクションの状態は,必要に応じてXARファイルに記録されます。
XAリソースサービスの運用を次の図に示します。
図3-38 XAリソースサービスの運用
XAリソースサービスを使用する場合で次に示すときは,トランザクションが不正に残ることがあります。
J2EEで動作するアプリケーションサーバと連携する場合のトランザクション情報の管理を次の表に示します。
表3-31 トランザクション情報の管理(J2EEで動作するアプリケーションサーバと連携する場合)
トランザクション要求種別 | トランザクション情報の管理 | トランザクションの状態変更(正常ケース) | ||
---|---|---|---|---|
開始 | 終了 | ファイルのI/O | ||
Start() | ○ | - | ○ | なし → Active |
Call() | - | - | - | 変化しない |
End() | - | - | - | Active → Idle |
Prepare() | - | - | - | Idle → Prepared |
○ | - | Idle → なし※1 | ||
Commit() | - | ○ | - | Prepared → なし※2 |
Idle → なし※3 | ||||
Rollback() | - | ○ | - | Prepared → なし※2 |
Idle → なし※3 | ||||
Recover() | - | - | - | 変化しない |
Forget() | - | ○ | - | Heuristically Completed → なし |
.NET Frameworkアプリケーションと連携する場合のトランザクション情報の管理を次の表に示します。
表3-32 トランザクション情報の管理(.NET Frameworkアプリケーションと連携する場合)
トランザクション要求種別 | トランザクション情報の管理 | トランザクションの状態変更 (正常ケース) | ||
---|---|---|---|---|
開始 | 終了 | ファイルのI/O | ||
Call() | ○ | - | - | なし → Active※1 |
- | - | - | 変化しない | |
Prepare() | - | - | ○ | Active → Idle → Prepared |
○ | ○ | Active → Idle → なし※2 | ||
Commit() | - | ○ | - | Prepared → なし※3 |
Active → Idle → なし※4 | ||||
Rollback() | - | ○ | - | Prepared → なし※3 |
Active → Idle → なし※4 | ||||
Recover() | - | - | - | 変化しない |
Forget() | - | ○ | - | Heuristically Completed → なし |
XAリソースサービスは,必要に応じてトランザクション情報をXARファイルに格納します。XARファイルは,XAリソースサービスの正常開始処理で初期化されます。
XARファイルはxarinitコマンドで作成し,xarrmコマンドで削除します。また,XARファイルのファイル情報はxarfillsコマンドで確認します。
XARファイルには,オンライン用XARファイルとバックアップ用XARファイルの二つが必要です。オンライン用XARファイルとバックアップ用XARファイルは,同一のレコード長およびレコード数にしてください。また,I/Oできるファイルにしてください。
通常はオンライン用XARファイルを使用し,オンライン用XARファイルに障害が発生した場合,バックアップ用XARファイルに自動的にスワップします。障害発生を考慮して,オンライン用XARファイルとバックアップ用XARファイルは異なるディスクボリュームに格納してください。
XARファイルは,一つのトランザクションブランチに対して1レコードを使用します。そのため,XARファイルには,同時に起動するトランザクションブランチ数(トランザクションサービス定義のtrn_tran_process_countオペランドの値)以上のレコードが必要です。
XAリソースサービス定義の定義コマンドxarfileでXARファイルを指定します。指定する前に,上記の条件に合うXARファイルをあらかじめ作成しておいてください。存在しないファイルをXARファイルに指定した場合,エラーになります。また,トランザクションサービス定義のtrn_tran_process_countオペランドの値よりもレコード数が少ないXARファイルを指定した場合もエラーになります。
定義コマンドxarfileの-t onlineオプションでオンライン用XARファイルを,-t backupオプションでバックアップ用XARファイルを指定します。必ず両方のXARファイルを指定してください。
XARファイルの二重化機能はサポートしていません。また,次の状態ではXAリソースサービスはトランザクション情報を管理できません。
XAリソースサービスは,オンライン用XARファイルとバックアップ用XARファイルの両方に障害が発生した場合に閉塞します。閉塞を解除するには,xarrlesコマンドを実行してください。詳細については,「3.15.4 XARファイルに障害が発生した場合の運用」を参照してください。
XAリソースサービスが管理するトランザクションの状態を表示するには,xarlsコマンドを実行してください。未決着のトランザクションを決着させるには,xarforceコマンドを実行してください。