Hitachi

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


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関数の引数に次のどれかを指定する必要があります。

  1. ホスト名指定

    /etc/hostsファイル,またはDNSなどでIPアドレスとマッピングできるホスト名を指定して,サービス要求先ノードを特定します。

    このとき,サービス要求先のシステム共通定義のname_portオペランドに指定した値と,サービス要求元(dc_rpc_call_to関数を呼び出した側)のname_portオペランドに指定した値が同じであることが前提です。

  2. ノード識別子指定

    システム共通定義のnode_idオペランドに指定されているノード識別子を指定して,サービス要求先のOpenTP1ノードを特定します。

    指定したノード識別子に対応するサービス要求先のOpenTP1ノードのホスト名がグローバルドメイン内にあることが前提です。

  3. ホスト名とポート番号の指定

    次の値を指定することでサービス要求先を特定します。

    • /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関数を使った通信の例を次の図に示します。

図2‒16 dc_rpc_call_to関数を使った通信の例

[図データ]