8.5.3 スケジューラダイレクト機能を使用したRPC
TP1/Client/J,TP1/Server Baseからコンテナ内外のTP1/Server Baseへスケジューラダイレクト機能を使用したRPCができます。システム形態に応じてTP1/Client/J,TP1/Server Baseの定義設定,およびServiceの設定を行ってください。
また,dchostオペランドやdcsvgdefコマンドに指定する通信先のホスト名は,通信先のTP1/Server Baseに指定したipc_response_hostオペランドの値と一致させる必要があります。
- 〈この項の構成〉
(1) コンテナ内のTP1/Client/Jとコンテナ内のTP1/Server Base間のRPC
(a) TP1/Client/J環境定義の設定【①TP1/Client/J】
TP1/Client/Jインスタンスごとに,次のTP1/Client/J環境定義を設定してください。
# |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|
1 |
dccltcuprcvport |
CUPの電文受信で使用するポート番号 |
この構成では必ずdccltcuprcvportオペランドを設定してください。 |
2 |
dchost=ホスト名:ポート番号 |
rpcCallメソッドを発行する場合
rpcCallToメソッドを発行する場合,このオペランドの設定は不要です。 |
rpcCallToメソッドを使用する場合は,左記のホスト名を設定したDCRpcBindTblオブジェクトを作成してから,rpcCallToメソッドを発行してください。 また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。 |
3 |
dcnotifyreshost |
Y |
詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。 |
4 |
dcresponsehost |
TP1/Server Baseに通知する,応答電文受信用のホスト名 |
(b) システム定義の設定【②TP1/Server Base】
次のシステム定義を設定してください。
# |
定義名 |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|---|
1 |
スケジュールサービス定義 |
scd_port |
スケジュールサービスのポート番号 |
− |
2 |
システム共通定義 |
ipc_notify_response_host |
Y |
詳細は,マニュアル「OpenTP1 システム定義」を参照してください。 |
3 |
ipc_response_host |
TP1/Client/Jに通知する,②TP1/Server Baseの電文受信用のホスト名 |
(c) 図中③Serviceの設定
コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。
コンテナ内の②TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
TP1/Client/Jからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.nodePortに対して接続してください。
(d) 図中④Serviceの設定
コンテナ内のTP1/Client/Jからコンテナ内のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。
コンテナ内の①TP1/Client/Jで,dccltcuprcvportオペランドに指定したポート番号を,Serviceのspec.ports.targetPortおよびspec.ports.nodePortに設定してください。
(2) コンテナ内のTP1/Server Base間のRPC
(a) システム定義の設定【①TP1/Server Base】
次のシステム定義を設定してください。
# |
定義名 |
オペランド名/コマンド名 |
設定内容 |
補足 |
---|---|---|---|---|
1 |
システム共通定義 |
rpc_port_base |
30000以降のポート番号 |
「8.6.4 Serviceの作成」を参照し,ほかのPodの使用範囲と重複しないポート番号をrpc_port_baseに設定してください。 |
2 |
ipc_notify_response_host |
Y |
詳細は,マニュアル「OpenTP1 システム定義」を参照してください。 |
|
3 |
ipc_response_host |
通信先ノードのTP1/Server Baseに通知する,応答電文受信用のホスト名 |
||
4 |
ユーザサービスネットワーク定義 |
dcsvgdef -hホスト名-p ポート番号 |
dc_rpc_call関数を発行する場合
③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort dc_rpc_call_to関数を発行する場合,このオペランドの設定は不要です。 |
dc_rpc_call_to関数を使用する場合は,DCRPC_DIRECT_SCHEDULE関数で左記ホスト名を設定し,DCRPC_BINDING_TBL構造体を作成してからdc_rpc_call_to関数を発行してください。 また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。 |
(b) システム定義の設定【②TP1/Server Base】
「表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。
(c) 図中③Serviceの設定
コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。
コンテナ内の②TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
TP1/Server Baseからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。
(d) 図中④Serviceの設定
コンテナ内の①TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
また.コンテナ内のTP1/Server Baseからコンテナ内のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。
コンテナ内の①TP1/Server Baseで,応答電文を受信するためのポート番号をServiceのspec.ports.targetPortに設定してください。
応答電文の受信にはエフェメラルポートを使用するため,「8.6.4 Serviceの作成」で求めたエフェメラルポート数分のポートをServiceに設定する必要があります。
Serviceへ設定が必要なポート番号の見積方法については,「8.6.4 Serviceの作成」を参照してください。
(3) TP1/Server Baseとコンテナ内のTP1/Server Base間のRPC
(a) システム定義の設定【①TP1/Server Base】
次のシステム定義を設定してください。
# |
定義名 |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|---|
1 |
システム共通定義 |
ipc_notify_response_host |
Y |
詳細は,マニュアル「OpenTP1 システム定義」を参照してください。 |
2 |
ipc_response_host |
通信先ノードのTP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名 |
||
3 |
ユーザサービスネットワーク定義 |
dcsvgdef -hホスト名-p ポート番号 |
dc_rpc_call関数を発行する場合
③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort dc_rpc_call_to関数を発行する場合,このオペランドの設定は不要です。 |
dc_rpc_call_to関数を使用する場合は,DCRPC_DIRECT_SCHEDULE関数で左記ホスト名を設定し,DCRPC_BINDING_TBL構造体を作成してからdc_rpc_call_to関数を発行してください。 また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。 なお,指定するホスト名には①TP1/Server Baseが起動するホストのホスト名を指定しないでください。指定した場合dc_rpc_call関数が失敗します。 |
(b) システム定義の設定【②TP1/Server Base】
「表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。
(c) 図中③Serviceの設定
コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。
コンテナ内の②TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
TP1/Server Baseからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。
(4) コンテナ内のTP1/Client/JとTP1/Server Base間のRPC
(a) TP1/Client/J環境定義の設定【①TP1/Client/J】
次のTP1/Client/J環境定義を設定してください。
# |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|
1 |
dccltcuprcvport |
CUPの電文受信で使用するポート番号 |
この構成では必ずdccltcuprcvportオペランドを設定してください。 |
2 |
dcnotifyreshost |
Y |
詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。 |
3 |
dcresponsehost |
TP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名 |
(b) システム定義の設定【②TP1/Server Base】
「表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。
(c) Serviceの設定
コンテナ内のTP1/Client/Jからコンテナ外のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。
コンテナ内の①TP1/Client/Jで,dccltcuprcvportオペランドに指定したポート番号を,Serviceのspec.ports.targetPortおよびspec.ports.nodePortに設定してください。
(5) TP1/Client/Jとコンテナ内のTP1/Server Base間のRPC
(a) TP1/Client/J環境定義の設定【TP1/Client/J】
次のTP1/Client/J環境定義を設定してください。
# |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|
1 |
dchost=ホスト名:ポート番号 |
rpcCallメソッドを発行する場合
rpcCallToメソッドを発行する場合,このオペランドの設定は不要です。 |
通信先指定RPCを使用する場合は,左記のホスト名を設定したDCRpcBindTblオブジェクトを作成してから,rpcCallToメソッドを発行してください。 また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。 |
2 |
dcnotifyreshost |
Y |
詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。 |
3 |
dcresponsehost |
TP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名 |
(b) システム定義の設定【②TP1/Server Base】
「表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定し,スケジュールサービス用のServiceを作成してください。
(c) 図中③Serviceの設定
コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。
コンテナ内の②TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
TP1/Client/Jからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。
(6) コンテナ内のTP1/Server BaseとTP1/Server Base間のRPC
(a) システム定義の設定【①TP1/Server Base】
次のシステム定義を設定してください。
# |
定義名 |
オペランド名 |
設定内容 |
補足 |
---|---|---|---|---|
1 |
システム共通定義 |
rpc_port_base |
30000以降のポート番号 |
「8.6.4 Serviceの作成」を参照し,ほかのPodの使用範囲と重複しないポート番号をrpc_port_baseに設定してください。 |
2 |
ipc_notify_response_host |
Y |
詳細は,マニュアル「OpenTP1 システム定義」を参照してください。 |
|
3 |
ipc_response_host |
通信先ノードのTP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名 |
(b) システム定義の設定【②TP1/Server Base】
「表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。
(c) 図中③Serviceの設定
コンテナ内の①TP1/Server Baseでscd_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。
また,コンテナ内のTP1/Server Baseからコンテナ外のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。
コンテナ内の①TP1/Server Baseで,応答電文を受信するためのポート番号をServiceのspec.ports.targetPortに設定してください。
応答電文の受信にはエフェメラルポートを使用するため,「8.6.4 Serviceの作成」で求めたエフェメラルポート数分のポートをServiceに設定する必要があります。
Serviceへ設定が必要なポート番号の見積方法については,「8.6.4 Serviceの作成」を参照してください。