2.3.8 OpenTP1以外のサーバへのRPC
DCCM3などの,OpenTP1以外のサーバへRPCを行う機能です。なおサーバ側に,OpenTP1のRPC要求を解釈する機能が組み込まれていることが前提になります。
(1) 相手サーバの指定方法
RPCを行う際,相手サーバはサービスグループ名とサービス名で指定しますが,この指定方式はOpenTP1のサーバに対するRPCと同じです。
ただし,OpenTP1のネームサービスの管理外にあるサーバを呼び出すため,クライアント側にネームサービスに代わるアドレス解決手段を用意します。
(2) 相手サーバのアドレス定義
クライアント側に,サービスグループ名に対応する,RPC受け付け窓口(ホスト名,ポート番号)のリストを,テキストファイルで作成しておきます。クライアント環境定義DCCLTSERVICEGROUPLISTにこのテキストファイル名を宣言します。
TP1/ClientはRPC実行時,指定されたサービスグループ名が,このリストに定義されているか検索し,合致するものがあった場合には対応するRPC受け付け窓口にRPCを行います。
(3) RPC機能の概要
RPCの形態としては,同期応答型RPCと非応答型RPCです。
トランザクション制御下でRPCを行っても,OpenTP1のトランザクションの対象とはなりません。
サービスグループ名とサーバが対になっている関係上,負荷分散機能も対象外となります。ただし,常設コネクションを使用してDCCM3論理端末へRPCを行う場合,負荷分散機能を使用できます。詳細については,「2.3.8(4) DCCM3論理端末へRPCを行う場合の負荷分散」を参照してください。
DCCM3に対してRPCを行う場合,サービス名がトランザクション名と評価されます。
OpenTP1以外のサーバへのRPCの処理の流れを次の図に示します。
(4) DCCM3論理端末へRPCを行う場合の負荷分散
TP1/ClientとDCCM3論理端末が常設コネクションを使用してRPCを行う場合,複数のDCCM3に振り分けて負荷を分散できます。クライアント環境定義に指定された複数のDCCM3論理端末のホスト名およびポート番号の中から,接続先をランダムに選択し,接続を試みます。試みた先のDCCM3論理端末との接続に失敗した場合は,これを除き,クライアント環境定義に指定した残りのDCCM3論理端末から再びランダムに選択し,接続を試みます。これを繰り返し,定義に指定されたDCCM3論理端末との接続にすべて失敗した場合,初めてエラーを検知します。
TP1/ClientとDCCM3論理端末との通信方法を次に示します。この中で,負荷分散できるのは,常設コネクションを使用している1.と2.の方法です。
-
クライアント環境定義DCCLTDCCMHOSTにDCCM3論理端末のホスト名,DCCLTDCCMPORTにDCCM3論理端末のポート番号を指定し,dc_clt_connect_s関数の引数flagsにDCCLT_DCCM3を指定します。
この場合,常設コネクションを使用します。
-
クライアント環境定義DCCLTRAPHOSTにDCCM3論理端末のホスト名およびポート番号を指定し,dc_clt_connect_s関数の引数flagsにDCNOFLAGSを指定します。
この場合,常設コネクションを使用します。
-
クライアント環境定義DCCLTSERVICEGROUPLISTに,サービスグループごとにDCCM3論理端末のホスト名およびポート番号を指定したファイルを指定します。
この場合,常設コネクションを使用しません。