3.3.3 rapクライアントマネジャ
rapクライアントが常設コネクションを確立していると認識していても,その常設コネクションが有効でない場合(rapサーバ側マシンの電源の切断など)があります。この場合,rapクライアントがee_rpc_call関数を呼び出してrapサーバにサービス要求を送信しても,rapサーバでサービス要求は受信されません。さらに,rapクライアントには,タイムアウトになるまでee_rpc_call関数の応答が返ってきません。
この現象を回避するために,rapクライアントマネジャ機能を使用します。rapクライアントマネジャ機能を使用すると,rapサーバがrapクライアントに起動通知をすることで,現在の常設コネクションが有効かどうかを判断できます。また,現在のコネクションが無効であった場合は,新しく有効なコネクションを確立して代理実行を要求します。
(1) rapクライアントマネジャ機能を使用するための準備
rapクライアントマネジャ機能を使用するには,次に示すRPC関連定義のオペランドを指定する必要があります。
- rapクライアントとして動作するTP1/EEの場合
-
-
rap_client_manager_portオペランドを指定
-
rap_listen_infオペランドを指定
-
- rapサーバとして動作するTP1/EEの場合
-
-
rap_notifyオペランドにYを指定
-
rap_client_manager_nodeオペランドを指定
-
(2) rapクライアントマネジャ機能を使用した場合の処理の流れ
rapクライアントマネジャ機能を使用した場合,rapクライアントが代理実行を要求する前に,rapサーバがrapクライアントのrapクライアントマネジャに対して起動通知を送信します。rapクライアントマネジャは,rapサーバのrapリスナーから起動通知を受信します。rapクライアントマネジャは,この起動通知によって現在のコネクションが有効かどうかを判断します。コネクションが無効であると判断した場合,不要なコネクションを解放し,再度コネクションを確立したあとで,rapサーバに対して代理実行を要求します。
rapクライアントマネジャ機能を使用した場合の例を次の図に示します。
この図の場合に指定するオペランドの例を次に示します。
- TP1/EE(rapクライアント)
eesvgdef -g eeserver1 -h HOST_D:PORT_D -t RAP rap_client_manager_port = PORT_C rap_listen_inf = "ees1:PORT_B=HOST_D:PORT_D"
- TP1/EE(rapサーバ)
rap_listen_port = PORT_B rap_notify = Y rap_client_manager_node = "HOST_A:PORT_C"
rapクライアントマネジャ機能を使用した場合の例について説明します。
-
rapクライアントとrapサーバは,常設コネクション-Aを確立していますが,rapサーバの電源が切断されます。
-
rapサーバが再起動されます。
-
rapサーバのrapリスナーは,RPC関連定義のrap_client_manager_nodeオペランドに指定されたノードのrapクライアントマネジャに対して起動通知をします。
-
rapクライアントは,rapサーバから起動通知を受信したことによって常設コネクション-Aが無効であると判断して,常設コネクション-Aを解放します。
-
rapクライアントは,再度コネクションを確立(常設コネクション-B)してrapサーバに対して代理実行を要求します。