2.2.2 リモートプロシジャコールの形態と同期点の関係
トランザクションとして稼働しているクライアントUAPからトランザクショナルRPCで呼ばれたサーバUAPはトランザクションとして稼働します。各トランザクションブランチは,一つのグローバルトランザクションとして同期を取れます。したがって,各サーバUAPのプロセスは,処理終了後,ee_rpc_call関数を呼び出したUAPにリターンしても,ルートトランザクションブランチに戻って同期点処理が完了するまでは,次のサービス要求を受け付けられません。また,サーバUAPで確保している資源も解放されません。これは非同期応答型RPC,非応答型RPCの場合でも同様です。
このように,UAPの処理ではRPCのトランザクション制御で,複数のUAPで同期が取れます。
RPCのトランザクション制御は,TP1/EE同士,または,TP1/EEとTP1/Server Baseとの間で実行できます。詳細については,「2.1.11 トランザクショナルRPC」またはマニュアル「TP1/Server Base Enterprise Option 使用の手引」のTP1/Server Baseとのトランザクション連携に関する説明を参照してください。
クライアントUAPの同期点処理が完了する前に,サーバUAPのプロセスでほかのサービス要求を処理できる場合があります。これをトランザクションの最適化といいます。トランザクションの最適化については,「2.2.4 トランザクションの最適化」を参照してください。
- 〈この項の構成〉
(1) リモートプロシジャコールと同期点の関係
同期応答型RPCでのRPC応答メッセージの送信タイミングは,サーバUAPがルートトランザクションブランチかどうかで異なります。
-
サーバUAPがルートトランザクションブランチの場合
トランザクションの同期点処理が完了したあとにRPC応答メッセージを送信します。
-
サーバUAPがルートトランザクションでない場合
UAPがリターンしたときにRPC応答メッセージを送信します。
リモートプロシジャコールと同期点の関係を次の図に示します。
(2) 同期応答型RPCと同期点の関係
同期応答型RPCのトランザクション処理の場合は,ルートトランザクションブランチに処理結果が戻って,同期点取得処理を終えた時点でトランザクションの終了となります。
トランザクションを最適化する条件がそろっている場合,サーバUAPのプロセスは処理が終了した時点で,次のサービス要求を受け付けられます。
同期応答型RPCと同期点の関係を次の図に示します。
(3) 非同期応答型RPCと同期点の関係
非同期応答型RPCのトランザクション処理の場合は,クライアントUAPで同期点処理を終えた時点でRPCの処理を終了とします。同期点処理後にサーバUAPから応答が返ってきても,ee_rpc_call関数を呼び出したUAPでは受信できません。
非同期応答型RPCと同期点の関係を次の図に示します。