2.3.14 リモートAPI機能
TP1/Clientでは,CUPとサーバ間に常設コネクションを確立して,CUPが発行したAPIをサーバ側に転送して,サーバ側のプロセスで実行できます。このような機能をリモートAPI機能といいます。リモートAPI機能を使うと,ファイアウォールの内側にあるUAPに対しても,サービスを要求できます。ファイアウォールとは,共用ネットワークと使用制限のあるネットワークとの間に位置し,第三者が共用以外のネットワークに不正侵入することを防ぐためのハードウェア,およびソフトウェアをいいます。
CUPでは,リモートAPI機能を使用してファイアウォールを通過する場合,dc_clt_cltin_s関数(flagsにDCCLT_NO_AUTHENTを指定)を発行したあと,常設コネクション確立要求をTP1/Serverのrapリスナーに送信します。
常設コネクションの確立応答を受信した時点で,rapサーバとの常設コネクションが確立されます。コネクション確立後は,rapサーバに対して発行される要求は,常設コネクションを使用して送信します。ただし,常設コネクションが解放されたあとは,再びrapリスナーへ要求を送信します。
この機能を使用する場合は,クライアント環境定義DCCLTRAPHOSTを指定してください。
また,DCCM3の論理端末に対してもリモートAPI機能を使用してサービスを要求できます。
なお,クライアント環境定義DCCLTRAPAUTOCONNECTにYを指定している場合,CUPとrapサーバまたはDCCM3の論理端末との間に自動的に常設コネクションを確立します。この場合,dc_clt_connect_s関数,およびdc_clt_disconnect_s関数を実行する必要はありません。
リモートAPI機能について,次の図に示します。
(1) 前提条件
リモートAPI機能は,サービス要求先のTP1/Server Baseが03-05以降の場合に使用できます。
リモートAPI機能を使用して,トランザクションを制御する場合,サービス要求先のTP1/Server Baseが03-06以降の必要があります。
ただし,DCCM3の論理端末にサービスを要求するには,サービス要求先のDCCM3が09-02以降の場合で,TP1/Client/W 03-04以降,および TP1/Client/P 03-04以降の必要があります。
(2) 適用範囲
この機能を使用してDCCM3に対してRPCを行う場合,CUPがルートトランザクションとなるようなトランザクションは生成できません。また,同時に複数の相手システムとの常設コネクションを確立することはできません。
なお,この機能では,XATMIインタフェースは使用できません。
(3) 常設コネクション確立先の選定方法
常設コネクションの確立先は,dc_clt_connect_s関数で設定するflags,およびクライアント環境定義DCCLTDCCMHOSTとDCCLTRAPHOSTの指定によって異なります。リモートAPI機能を使用してファイアウォールを通過する場合は,クライアント環境定義DCCLTRAPHOSTを指定してください。
関数の設定,および定義の指定と常設コネクション確立要求先との関係を,次の表に示します。
引数 flags |
クライアント環境定義 |
常設コネクション確立要求先 |
|
---|---|---|---|
DCCLTDCCMHOST |
DCCLTRAPHOST |
||
DCNOFLAGS |
○ |
○ |
rapサーバ,またはDCCM3の論理端末※1 |
− |
CUP実行プロセス |
||
− |
○ |
rapサーバ,またはDCCM3の論理端末※1 |
|
− |
CUP実行プロセス |
||
DCCLT_DCCM3 |
○ |
○ |
DCCM3の論理端末※2 |
− |
DCCM3の論理端末※2 |
||
− |
○ |
エラーリターン |
|
− |
エラーリターン |
(4) リモートAPI機能を使用して,トランザクションを制御するときの注意事項
-
クライアント環境定義DCCLTRAPHOSTに指定する常設コネクション確立要求先は,TP1/Server Base 03-06以降の必要があります。これより古いバージョンを使用した場合,dc_trn_begin_s関数はDCCLTER_PROTOでエラーリターンします。また,常設コネクション確立先をDCCM3論理端末とした場合も同様で,dc_trn_begin_s関数はDCCLTER_PROTOでエラーリターンします。
-
TP1/Serverのオンラインテスタ機能は使用できません。クライアント環境定義DCUTOKEYにテストユーザIDを指定した場合,dc_trn_begin_s関数はDCCLTER_PROTOでエラーリターンします。