2.1.11 トランザクショナルRPC
次に示すどちらかの場合,RPCはトランザクショナルRPCとなります。
-
TP1/EEがクライアントUAPで,ee_rpc_call関数のflagsオプションにEERPC_TPNOTRANを指定しない場合,かつ,TP1/Server Baseがトランザクション属性のサーバUAPの場合
-
TP1/Server Baseがトランザクション属性のクライアントUAPで,dc_rpc_call関数のflagsオプションにDCRPC_TPNOTRANを指定しない場合
トランザクショナルRPCでは,クライアントUAPとサーバUAPが同一トランザクション(グローバルトランザクション)として動作します。
次に示すどちらかの場合,クライアントUAPとサーバUAPが別トランザクションとして動作します。
-
TP1/EEがクライアントUAPで,ee_rpc_call関数のflagsオプションにEERPC_TPNOTRANを指定した場合
-
TP1/Server BaseがクライアントUAPで,dc_rpc_call関数のflagsオプションにDCRPC_TPNOTRANを指定した場合
トランザクショナルRPCでは,クライアントUAPのトランザクションの決着によって,サーバUAPのトランザクションが決着します。
トランザクショナルRPCおよび非トランザクショナルRPCの流れを次の図に示します。
- 注意事項
-
-
トランザクション同期型送信で要求したRPCは,トランザクショナルRPCにはなりません。
-
同期点処理が終了するまで処理スレッドを占有するため,グローバルトランザクション内で時間の掛かる処理を行うと,処理スレッドの使用効率が低下します。
-
同期点処理が終了するまで対象サービスが処理中になるため,サービスの同時処理限界数の指定値によっては,グローバルトランザクション内から同一サービスに対してサービス要求をすると,サービス要求または同期点処理待ちのどちらかがタイムアウトします。
-
オンラインテスタを起動した状態のTP1/Server BaseからTP1/EEに対してトランザクショナルRPCを実行することはできません。
-