2.1.17 通信先を指定したRPC
dc_rpc_call関数を使ってサービスを要求する場合,要求するサービスがどこにあるかは,OpenTP1のネームサービスで管理しているので,クライアントUAPで意識する必要はありません。
これに対し,dc_rpc_call_to関数を使えば,特定のサービス要求先にサービスを要求できます。dc_rpc_call_to関数では,ドメイン修飾をしてサービスを要求できません。それ以外は,dc_rpc_call関数の機能と変わりません。
なお,この関数は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できませんので,ご了承ください。この関数は,TP1/Server管理下のC言語で作成したUAPでだけ呼び出せます。COBOL言語で作成したUAPでは使用できません。
サービス要求先を特定するには,dc_rpc_call_to関数の引数に次のどれかを指定する必要があります。
-
ホスト名指定
/etc/hostsファイル,またはDNSなどでIPアドレスとマッピングできるホスト名を指定して,サービス要求先ノードを特定します。
このとき,サービス要求先のシステム共通定義のname_portオペランドに指定した値と,サービス要求元(dc_rpc_call_to関数を呼び出した側)のname_portオペランドに指定した値が同じであることが前提です。
-
ノード識別子指定
システム共通定義のnode_idオペランドに指定されているノード識別子を指定して,サービス要求先のOpenTP1ノードを特定します。
指定したノード識別子に対応するサービス要求先のOpenTP1ノードのホスト名がグローバルドメイン※内にあることが前提です。
-
ホスト名とポート番号の指定
次の値を指定することでサービス要求先を特定します。
-
/etc/hostsファイル,またはDNSなどでIPアドレスとマッピングできるホスト名
-
上記で指定したホストにあるOpenTP1システムの,システム共通定義のname_portオペランドに指定したネームサービスのポート番号
このとき,サービス要求先のname_portオペランドに指定した値と,サービス要求元のname_portオペランドに指定した値は同じでなくてもまいません。
-
- 注※
-
ここでのグローバルドメインとは,次のノード名の集合を指します。
- システム共通定義のname_domain_file_useオペランドにNを指定している場合
-
システム共通定義のall_nodeオペランド,all_node_exオペランドで指定したノード名の集合です。
- システム共通定義のname_domain_file_useオペランドにYを指定している場合
-
ドメイン定義ファイルに指定したノード名の集合です。なお,ドメイン定義ファイルの格納場所は次のとおりです。
-
all_nodeのドメイン定義ファイル
$DCCONFPATH/dcnamndディレクトリ下
-
all_node_exのドメイン定義ファイル
$DCCONFPATH/dcnamndexディレクトリ下
-
ノード識別子を指定して,サービス要求先を特定したdc_rpc_call_to関数を使った通信の例を次の図に示します。
|