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の関係を次の図に示します。

図2-8 トランザクションとRPCの関係

[図データ]

  1. TP1Clientクラスのインスタンスを生成します。
  2. TP1ClientクラスのBeginメソッドを呼び出してトランザクションを開始します。
    rapサーバは,dc_trn_begin関数を発行し,rapサーバのプロセスからグローバルトランザクションを開始します。
    TP1Clientのインスタンスはrapサーバのプロセスと1対1で結び付けられます。
  3. TP1ClientクラスのCallメソッドを呼び出してSPP.NETまたはSPPにサービスを要求します。コミットまたはロールバックが発生するまで,rapサーバとSPP.NETまたはSPPは関連づけられます。
  4. TP1ClientクラスのCommitメソッドを呼び出して非連鎖モードのコミットをします。
    この時点でTP1Clientクラスのインスタンス,rapサーバのプロセス,および要求先のSPP.NETまたはSPPとの関連づけはなくなります。