Hitachi

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


2.1.12 リカーシブコールを使うときの注意

実行中のサーバUAPから,自分と同じサービスグループ名とサービス名を指定してサービスを要求できます。これをリカーシブコール再帰呼び出し)といいます。リカーシブコールの場合でも,その同じサービスを実行するために新しいプロセスが必要になります。そのため,リカーシブコールを使う場合,サービスを要求する指定をした時点で,実行できるプロセスがなくなる場合があります。このとき,RPCのタイムアウトになるか,待ち時間を指定していないときは永久に待ちになります。リカーシブコールを使うときは,余裕あるプロセス数を指定してください。なお,リカーシブコールを使えるのはキュー受信型サーバです。ソケット受信型サーバはリカーシブコールを使えません。

グローバルトランザクションの構成要素である一つのトランザクションブランチの中でも,リカーシブコールはできます。ただし,クライアントUAPと同じサービスグループに属していても,要求されたサービスは別プロセスで別のトランザクションブランチとして実行されます。

〈この項の構成〉

(1) リカーシブコールとシステム定義との関連

ユーザサービス定義balance_countオペランドに設定した値によっては,リカーシブコールをしてもプロセスが増えないで,タイムアウトになる場合があります。次の場合には,必ずbalance_countオペランドの値に0を指定してください。

ユーザサービス定義の最大プロセス数に1を指定した(parallel_count=1)のサービスグループに属するサービスでは,リカーシブコールは使えません。