分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

3.5.1 TP1/Clientのリモートプロシジャコール

CUPから,TP1/Client/WまたはTP1/Client/Pのライブラリ関数を使って,OpenTP1のサーバUAP(SPP)へサービスを要求します。

TP1/Client/WまたはTP1/Client/Pを使用する場合は,CUPからトランザクションを開始することもできます。

TP1/Client/WまたはTP1/Client/PとOpenTP1との通信を次の図に示します。

図3-60 TP1/Client/WまたはTP1/Client/PとOpenTP1との通信

[図データ]

Javaアプレット,Javaアプリケーション,またはJavaサーブレットからは,TP1/Client/Jのクラスライブラリを使って,OpenTP1のサーバUAP(SPP)へサービスを要求します。

TP1/Client/JとOpenTP1との通信を次の図に示します。

図3-61 TP1/Client/JとOpenTP1との通信

[図データ]

<この項の構成>
(1) OpenTP1の定義が必要なTP1/Clientの機能
(2) サーバの開始をTP1/Clientへ通知
(3) ソケット用ファイル記述子の見積もり計算式

(1) OpenTP1の定義が必要なTP1/Clientの機能

TP1/Client/WまたはTP1/Client/Pで次に示す機能を使う場合,サーバとなるOpenTP1にはクライアントサービス定義が必要です。

また,TP1/Client/WまたはTP1/Client/PでリモートAPI機能を使用する場合や,TP1/Client/JでOpenTP1のSPPへサービスを要求する場合には,OpenTP1側にrapリスナーサービス定義が必要です。

(2) サーバの開始をTP1/Clientへ通知

OpenTP1のサーバUAPから,TP1/Client/WまたはTP1/Client/Pのアプリケーションプログラム(CUP)へUAPが開始したことを通知できます。CUPへは,dc_rpc_cltsend関数でデータを送って,サーバUAPの開始を通知します。この機能を使って,サーバの起動完了を一斉にクライアントへ知らせることができます。

dc_rpc_cltsend関数で通知したデータは,CUPのdc_clt_chained_accept_notification関数,またはdc_clt_accept_notification関数で受け取ります。CUPがデータを受け取ることで,TP1/Client/WまたはTP1/Client/Pはサーバが稼働中であることがわかります。その後,CUPからサーバへサービスを要求します。dc_clt_chained_accept_notification関数,およびdc_clt_accept_notification関数については,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編」を参照してください。

OpenTP1のサーバUAPからTP1/Client/WまたはTP1/Client/PのCUPへの通信を次の図に示します。

図3-62 OpenTP1のサーバUAPからTP1/Client/WまたはTP1/Client/PのCUPへの通信

[図データ]

(3) ソケット用ファイル記述子の見積もり計算式

トランザクショナルRPC実行プロセス(clttrnd)のソケット用ファイル記述子の最大数は,ユーザサービスデフォルト定義のmax_socket_descriptorsオペランドに指定します。

トランザクショナルRPC実行プロセスのソケット用ファイル記述子の最大数の計算式を次に示します。

 
↑(トランザクショナルRPC実行プロセスが通信するUAPプロセス+1
+システムサービスプロセス数)/0.8↑
 
(凡例)
↑↑:小数点以下を切り上げます。

なお,ここに指定した値は,すべてのUAPおよび一部のシステムサーバにも有効になりますので注意してください。