Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


2.1.1 リモートプロシジャコールの実現方法

クライアントUAPから,サービスを要求する関数を使ってSPPのサービスを要求できます。UAPからサービスを要求するときは,サーバUAPのサービスグループ名サービス名を引数に設定したdc_rpc_call関数【CBLDCRPC('CALL ')】を呼び出します。要求されるサービスが,クライアントUAPと別のノードにあっても同じノードにあってもかまいません。要求されるサービスがどのノードにあるかは,OpenTP1のネームサービスで管理しているので,UAPで意識する必要はありません。

注※

サービスグループ名をドメイン修飾して設定することで,設定したドメイン内のサーバUAPへサービスを要求することもできます。ドメイン修飾したサービス要求については,「2.1.18 ドメイン修飾をしたサービス要求」を参照してください。

OpenTP1では,サーバUAPはサービス提供プログラム(SPP)です。SPPのサービスを要求できるクライアントUAPは,SUP,SPP,MHP,CUPです。

サーバUAPは,OpenTP1の開始と一緒に開始(自動起動)しておくか,OpenTP1の開始後にdcsvstartコマンドで開始(手動起動)しておきます。開始しておくことで,サーバUAPはサービスを提供できる状態になります。開始していないサーバUAPにサービスを要求すると,dc_rpc_call関数はエラーリターンします。

クライアントUAPは,開始したサーバUAPのプロセスが稼働しているかどうかに関係なく,dc_rpc_call関数でサービスを要求できます。サービスを要求したときに,指定したサーバUAPのプロセスが稼働していなくても,OpenTP1が自動的にプロセスを起動します。

MHPからRPCでサービスは要求できますが,MHPのサービス関数へはサービスを要求できません。また,オフラインの業務をするUAPでは,RPCを使えません。

RPCを使った通信のクライアント/サーバの関係を次の図に示します。

図2‒1 RPCを使った通信のクライアント/サーバの関係

[図データ]