Hitachi

OpenTP1 Version 7 分散アプリケーションサーバ TP1/LiNK 使用の手引


5.4.6 XAリソースサービスに関する運用

〈この項の構成〉

(1) XAリソースサービスを使用するための前提機能

XAリソースサービスを使用するには,次に示す機能および製品の使用が前提です。

J2EEで動作するアプリケーションサーバと連携する場合
  • リモートAPI機能

  • TP1/Client/J

  • uCosminexus TP1 ConnectorまたはCosminexus TP1 Connector

.NET Frameworkアプリケーションと連携する場合
  • リモートAPI機能

  • Client .NET

  • Connector .NET

(2) XAリソースサービスのトランザクション管理

XAリソースサービスは,TP1/Client/JまたはClient .NETからのトランザクション要求種別に従って,トランザクションの管理を開始したり終了したりします。また,TP1/Client/JまたはClient .NETから渡されるXAリソースサービスで連携するアプリケーションサーバのXID(トランザクション識別子)とOpenTP1が管理しているXIDとを対応づけてトランザクション情報を共用メモリ上で管理します。トランザクション情報は,必要に応じてXARファイルに記録します。トランザクション情報の管理を表5-2および表5-3に,XAリソースサービスの運用を図5-7に示します。

表5‒2 トランザクション情報の管理(アプリケーションサーバ連携)

トランザクション

要求種別

トランザクション情報の管理

トランザクションの状態変更

(正常ケース)

開始

終了

ファイルの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 → なし

(凡例)

○:処理を実行します。

−:処理を実行しません。

注※1

トランザクションブランチがread onlyの場合

注※2

2相コミット,またはロールバックの場合

注※3

1相コミット,またはロールバックの場合

表5‒3 トランザクション情報の管理(MSDTC連携)

トランザクション

要求種別

トランザクション情報の管理

トランザクションの状態変更

(正常ケース)

開始

終了

ファイルの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 → なし

(凡例)

○:処理を実行します。

−:処理を実行しません。

注※1

トランザクション内で最初のCall()要求の場合

注※2

トランザクションブランチがread onlyの場合

注※3

2相コミット,またはロールバックの場合

注※4

1相コミット,またはロールバックの場合

図5‒7 XAリソースサービスの運用

[図データ]

XAリソースサービスを使用する場合の注意

次の場合,トランザクションが不正に残ることがあります。

  • rapリスナー,またはrapサーバを強制停止した場合

    この場合,rapリスナー,またはrapサーバを開始してください。

  • リモートAPI機能で動作保証されていない操作をした場合

(a) XARファイル

XAリソースサービスは,必要に応じてトランザクション情報をXARファイルに格納します。

XARファイルの作成

XARファイルには,オンライン用XARファイルとバックアップ用XARファイルの二つが必要です。通常はオンライン用XARファイルを使用し,オンライン用XARファイルに障害が発生した場合,バックアップ用XARファイルに自動的にスワップします。障害発生を考慮して,オンライン用XARファイルとバックアップ用XARファイルは異なるディスクボリュームに格納してください。

XARファイルは,一つのトランザクションブランチに対して1レコードを使用します。そのため,XARファイルには,同時に起動するトランザクションブランチ数([システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の値)以上のレコードが必要です。

XARファイルは[システム環境設定]ウィンドウ-[XAリソースサービス環境設定]ダイアログボックスの[オンライン用XARファイルを作成するフォルダ名(O)]および[バックアップ用XARファイルを作成するフォルダ名(B)]にフォルダ名を指定して[上書き保存(V)]をクリックすることで作成できます。

XARファイルは[システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の指定値を基にxafileO(オンライン用XARファイル),xafileB(バックアップ用XARファイル)のファイル名で作成されます。

また,[システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の指定値を変更した場合は[上書き保存(V)]をクリックしてXARファイルを再作成するようにしてください。

XARファイルは,XAリソースサービスの正常開始処理で初期化されます。

また,次の状態ではXAリソースサービスはトランザクション情報を管理できません。

  • OpenTP1が未起動

  • リモートAPI機能が未起動

  • XAリソースサービスが未起動

  • XAリソースサービスが閉塞

XAリソースサービスは,オンライン用XARファイルとバックアップ用XARファイルの両方に障害が発生した場合に閉塞します。閉塞を解除するには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞解除(E)]ボタンをクリックしてください。詳細については,「5.4.6(4) XARファイルに障害が発生した場合の運用」を参照してください。

XAリソースサービスが管理するトランザクションの状態を表示するには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスを開いて[最新情報に更新(L)]ボタンをクリックしてください。未決着のトランザクションを決着させるには,[コミット(M)],[ロールバック(R)],または[強制終了(F)]ボタンをクリックしてください。詳細については,「6.4.5 XAリソースサービスの管理」を参照してください。

(3) XAリソースサービスの開始と終了

(a) XAリソースサービスの開始

XAリソースサービスを使用するかどうかは,[システム環境設定]ウィンドウの[XAリソースサービス環境設定]ダイアログボックスの[XAリソースサービスを使用する(X)]チェックボックスで指定します。チェックボックスをオンにした場合,OpenTP1の起動時にXAリソースサービスが開始されます。詳細については,「3.1.6 XAリソースサービス環境の設定」を参照してください。

XAリソースサービスを開始すると,XARファイルは初期化されます。XAリソースサービスの開始に失敗した場合,OpenTP1の起動も失敗します。

(b) XAリソースサービスの再開始

XAリソースサービスを再開始するにはOpenTP1を再開始します。前回OpenTP1を正常開始したときのXAリソースサービスの開始状態によって,XAリソースサービスを再開始するかどうかが決定します。

前回のOpenTP1の正常開始時にXAリソースサービスを開始していれば,XAリソースサービスを再開始します。XAリソースサービスを開始していなければ,XAリソースサービスを再開始しません。

XAリソースサービスを再開始すると,XARファイルは初期化されます。XAリソースサービスの再開始に失敗した場合,OpenTP1の再開始も失敗します。

OpenTP1再開始時に,[XAリソースサービス環境設定]ダイアログボックスの次の項目の設定を変更できます。

  • [アイドル状態のトランザクションブランチの監視時間(T)]

  • [オンライン用XARファイルを作成するフォルダ名(O)]

  • [バックアップ用XARファイルを作成するフォルダ名(B)]

OpenTP1の再開始時に[オンライン用XARファイルを作成するフォルダ名(O)]または[バックアップ用XARファイルを作成するフォルダ名(B)]の値を変更するのはXARファイルに障害が発生した場合だけです。それ以外の場合に,OpenTP1の再開始時に[オンライン用XARファイルを作成するフォルダ名(O)]または[バックアップ用XARファイルを作成するフォルダ名(B)]の値を変更すると,トランザクションブランチを回復できなくなるので注意してください。XARファイルに障害が発生したときのトランザクションブランチの回復方法については,「5.4.6(4) XARファイルに障害が発生した場合の運用」を参照してください。

XAリソースサービスを再開始すると,XARファイルを使用して前回のトランザクションブランチの状態に戻す処理(トランザクションブランチの回復処理)をします。

バックアップ用XARファイルが使用されている場合,バックアップ用XARファイルからトランザクションブランチを回復します。バックアップ用XARファイルが使用されていない場合,オンライン用XARファイルからトランザクションブランチを回復します。

トランザクションブランチの回復処理では,XARファイルの各レコードに記録されている前回のトランザクション情報を調査します。1相目の状態(Prepared)のまま決着が行われていないトランザクションブランチの場合,再びPrepared状態に戻します。

XARファイルにはトランザクションブランチのXID情報が含まれているため,再びアプリケーションサーバからのトランザクション決着指示を受け付けられるようになります。

Heuristically completed状態のトランザクションブランチの場合,再びHeuristically completed状態に戻し,ヒューリスティックを完了させます。Prepared状態になる前(Active,Idle)のトランザクションブランチの場合,すべてロールバックします。これらのトランザクションブランチのXID情報は削除されるため,アプリケーションサーバからトランザクションブランチの決着要求が来てもコミット決着できません。

また,トランザクション決着済み(コミットまたはロールバック)のトランザクションブランチの場合,トランザクションブランチの回復処理が行われてもトランザクションの決着結果は変わりません。

トランザクションの状態ごとのトランザクションブランチの回復処理を次の表に示します。

表5‒4 OpenTP1再開始時のトランザクションブランチ回復処理

トランザクション状態

処置

XID情報

Active

ロールバック

削除

Idle

ロールバック

削除

Prepared

OpenTP1のPJ出力前

トランザクション決着待ち

残す

OpenTP1のPJ出力後

コミット済み

削除

Rollback only

ロールバック

削除

Heuristically completed

ヒューリスティック完了

残す

(c) XAリソースサービスの終了

XAリソースサービスは,OpenTP1の終了時に終了します。すべてのアプリケーションサーバからのトランザクションブランチが決着していないとOpenTP1を終了できません。

決着していないトランザクションブランチがある場合,トランザクションブランチの決着を待ちます。OpenTP1の強制停止を実行した場合,トランザクションブランチの決着を待たないで強制的にOpenTP1が終了します。

(4) XARファイルに障害が発生した場合の運用

XAリソースサービスのオンライン中に,XARファイルのI/O障害が発生した場合,オンライン用XARファイルからバックアップ用XARファイルに自動的にスワップします。この機能をスワップ機能といいます。この機能を使用すると,オンライン用XARファイルに障害が発生しても,XAリソースサービスのオンラインを続行できます。

XARファイルのI/O障害発生時にXAリソースサービスのオンラインを再開始する方法は,障害がどのファイルで,またどの時点で発生するかによって異なります。障害発生時点ごとの運用方法を次に示します。

  1. オンライン用XARファイルに障害が発生した時点で,スワップ機能を使用して新しいXARファイルと入れ替える方法

  2. 1.のあと,さらにバックアップ用XARファイルに障害が発生し,XAリソースサービスが閉塞した時点で新しいXARファイルと入れ替える方法

  3. オンライン用XARファイルに障害が発生し,OpenTP1が停止した時点で新しいXARファイルと入れ替える方法

  4. オンライン用とバックアップ用の両方のXARファイルに障害が発生し,XAリソースサービスが閉塞およびOpenTP1が停止した時点で新しいXARファイルと入れ替える方法

1.および2.の方法は,OpenTP1を停止させることなく,障害が発生したXARファイルを新しいXARファイルに入れ替えます。これらの方法は,共用メモリから障害発生前のトランザクションブランチを回復できます。

1.の方法は,バックアップ用XARファイルに障害が発生する前に対策を実施するので,より確実にXAリソースサービスを運用できます。

3.の方法は,OpenTP1が停止しても,バックアップ用XARファイルの情報から障害発生前のトランザクションブランチを回復できます。

4.の方法はOpenTP1が停止し,さらにオンライン用およびバックアップ用の両方のXARファイルに障害が発生しているため,新しいXARファイルに入れ替えても,障害発生前のトランザクションブランチを回復できません。

それぞれの方法の詳細について説明します。

(a) オンライン用XARファイルに障害が発生した時点でのXARファイルの入れ替え

オンライン用XARファイルに障害が発生すると,XAリソースサービスはバックアップ用XARファイルにスワップして運用を続行します。この時点でオンライン用XARファイルを新しいファイルに入れ替えると,OpenTP1を停止させることなく,障害発生前のトランザクションブランチを回復できます。

XAリソースサービスがバックアップ用XARファイルを使用して運用中の場合,オンライン用XARファイルを入れ替えるには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞(H)]ボタンをクリックしてXAリソースサービスを強制的に閉塞します。XAリソースサービスが閉塞しても,ほかのOpenTP1サービスは実行できます。オンライン用XARファイルに障害が発生した時点での,オンライン用XARファイルの入れ替え方法を次に示します。

  1. [TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞(H)]ボタンをクリックします。

    XAリソースサービスが閉塞します。

  2. [XAリソースサービス環境設定]ダイアログボックスの[オンライン用XARファイルを作成するフォルダ名(O)]だけを変更します。そのあと,[上書き保存(V)]ボタンをクリックして,新しいオンライン用XARファイルを作成します。

    障害が発生しているオンライン用XARファイルを作成するフォルダとは別のディスクボリュームに作成してください。[システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の指定値は変更しないでください。

  3. [TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞解除(E)]ボタンをクリックします。

    XAリソースサービスの閉塞が解除されます。共用メモリからトランザクションブランチを回復し,新しく作成したオンライン用XARファイルを使用してXAリソースサービスのオンラインが再開始されます。

オンライン用XARファイルに障害が発生した場合のXARファイルの入れ替え方法を次の図に示します。

図5‒8 オンライン用XARファイルに障害が発生した場合のXARファイルの入れ替え方法

[図データ]

(b) バックアップ用XARファイルに障害が発生した時点でのXARファイルの入れ替え

オンライン用XARファイルに障害が発生し,バックアップ用XARファイルにスワップしてXAリソースサービスの運用を続行している間に,バックアップ用XARファイルにも障害が発生した場合,XAリソースサービスは閉塞状態になります。XAリソースサービスが閉塞状態になると,XAリソースサービスで連携するアプリケーションサーバからのトランザクション指示に対して,すべてXAER_RMERRを返します。ただし,障害が局所化されているため,OpenTP1は停止しないで,XAリソースサービス以外のOpenTP1サービスは実行できます。また,XARファイルを新しいファイルに入れ替えれば,XAリソースサービスのトランザクションブランチを回復できます。

オンライン用XARファイルとバックアップ用XARファイルの両方に障害が発生してXAリソースサービスが閉塞状態になった場合の,XARファイルの入れ替え方法を次に示します。

  1. [XAリソースサービス環境設定]ダイアログボックスの[オンライン用XARファイルを作成するフォルダ名(O)]および[バックアップ用XARファイルを作成するフォルダ名(B)]を変更します。そのあと,[上書き保存(V)]ボタンをクリックして,新しいXARファイルを作成します。

    オンライン用とバックアップ用のXARファイルを作成するフォルダを,障害の発生していないディスクボリューム上に作成してください。[システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の指定値は変更しないでください。

  2. [TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞解除(E)]ボタンをクリックします。

    XAリソースサービスの閉塞が解除されます。共用メモリからトランザクションブランチを回復し,新しく作成したオンライン用XARファイルを使用してXAリソースサービスのオンラインが再開始されます。

バックアップ用XARファイルで障害が発生した場合のXARファイルの入れ替え方法を次の図に示します。

図5‒9 バックアップ用XARファイル障害発生時のXARファイルの入れ替え方法

[図データ]

(c) オンライン用XARファイルに障害が発生しOpenTP1が停止した場合のXARファイルの入れ替え

オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止(正常停止/異常停止)すると,XAリソースサービスは閉塞します。XAリソースサービスを再開始するには,新しいXARファイルを作成してからOpenTP1を再開始します。

オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止した場合のXARファイルの入れ替え方法を次に示します。

  1. [XAリソースサービス環境設定]ダイアログボックスの[オンライン用XARファイルを作成するフォルダ名(O)]だけを変更します。そのあと,[上書き保存(V)]ボタンをクリックして,新しいオンライン用XARファイルを作成します。

    障害が発生しているオンライン用XARファイルを作成するフォルダとは別のディスクボリュームに作成してください。[システム環境設定]ウィンドウ-[トランザクションブランチ数(B)]の指定値は変更しないでください。

  2. OpenTP1を再開始します。

    OpenTP1を再開始すると,XAリソースサービスの閉塞が解除されます。バックアップ用XARファイルからトランザクションブランチを回復し,新しく作成したオンライン用XARファイルを使用してXAリソースサービスが再開始されます。

    注意事項

    停止したOpenTP1を正常開始,および再開始するときは,オンライン用およびバックアップ用の両方のXARファイルがI/O可能になっている必要があります。XARファイルに障害が発生したままではOpenTP1を開始できません。

オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止した場合のXARファイルの入れ替え方法を次の図に示します。

図5‒10 オンライン用XARファイル障害発生時およびOpenTP1停止時のXARファイルの入れ替え方法

[図データ]

(d) バックアップ用XARファイルに障害が発生しOpenTP1が停止した場合のXARファイルの入れ替え

オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,さらにOpenTP1が停止(正常停止/異常停止)すると,XAリソースサービスは閉塞します。この場合,障害発生前のトランザクションブランチは回復できません。XAリソースサービスを再開始するには,新しいXARファイルを作成してからOpenTP1を強制正常開始します。

オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法を次に示します。

  1. [XAリソースサービス環境設定]ダイアログボックスの[オンライン用XARファイルを作成するフォルダ名(O)]および[バックアップ用XARファイルを作成するフォルダ名(B)]を変更します。そのあと,[上書き保存(V)]ボタンをクリックして,新しいXARファイルを作成します。

    オンライン用とバックアップ用のXARファイルを作成するフォルダを,障害の発生していないディスクボリューム上に作成してください。

  2. OpenTP1を強制正常開始します。

    OpenTP1を再開始すると,XAリソースサービスの閉塞が解除されます。新しく作成したオンライン用XARファイルを使用してXAリソースサービスのオンラインが再開始されます。ただし,障害前のトランザクションブランチは回復できません。

    注意事項

    停止したOpenTP1を強制正常開始するときは,オンライン用およびバックアップ用の両方のXARファイルがI/O可能になっている必要があります。XARファイルに障害が発生したままではOpenTP1を開始できません。

オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法を次の図に示します。

図5‒11 オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法

[図データ]