2.3.3 トランザクションの開始と同期点取得
CUP.NETからTP1ClientクラスのBeginメソッドを呼び出して,トランザクションを開始します。
Beginメソッドを呼び出してから同期点取得(コミット)までが,グローバルトランザクションの範囲となります。Beginメソッドを呼び出したあと,そのグローバルトランザクションの中で新たなBeginメソッドは呼び出せません。
CUP.NETからSPP.NETまたはSPPに対してRPC要求を実行すると,CUP.NETはrapサーバでルートトランザクションブランチを生成し,呼び出したSPP.NETまたはSPPはトランザクションブランチとして実行されます。
なお,Beginメソッドの呼び出しから,RPC要求,同期点取得の間は,同一のTP1Clientオブジェクトである必要があります。
トランザクションとRPCの関係を次の図に示します。
|
-
TP1Clientクラスのインスタンスを生成します。
-
TP1ClientクラスのBeginメソッドを呼び出してトランザクションを開始します。
rapサーバは,dc_trn_begin関数を発行し,rapサーバのプロセスからグローバルトランザクションを開始します。
TP1Clientのインスタンスはrapサーバのプロセスと1対1で結び付けられます。
-
TP1ClientクラスのCallメソッドを呼び出してSPP.NETまたはSPPにサービスを要求します。コミットまたはロールバックが発生するまで,rapサーバとSPP.NETまたはSPPは関連づけられます。
-
TP1ClientクラスのCommitメソッドを呼び出して非連鎖モードのコミットをします。
この時点でTP1Clientクラスのインスタンス,rapサーバのプロセス,および要求先のSPP.NETまたはSPPとの関連づけはなくなります。