3.2.2 TP1/Client/J実行時の調整
通常,メソッドの監視時間はTP1/Client/J環境定義で設定します。しかし,TP1/Client/J環境定義の設定では,すべてのメソッドで同じ時間を使用するため,TP1/Server側で時間の掛かる処理がある場合,その時間の最大値を指定する必要があります。そのため,処理に合わせた実行時間の調整ができません。
この問題を解決するため,TP1/Client/Jでは,動的にメソッドの監視時間を調整するメソッドを提供しています。なお,これらのメソッドを実行すると引数で指定された値が実行時の値として設定され,TP1Clientクラスのインスタンスが存在する間(rpcCloseメソッドが呼び出されるまで),またはメソッドが新たに指定し直されるまでの間,有効です。メソッドの詳細については「4. TP1/Client/Jで使用するクラス」を参照してください。
- 〈この項の構成〉
(1) 時間監視の調整
時間監視の調整には,setDcwatchtim,setDccltinquiretime,およびsetDccltdelayの三つのメソッドを使用します。それぞれのメソッドで指定できる時間監視を示します。
- setDcwatchtimメソッド
-
応答監視時間を設定します。openConnection,rpcCall,およびcloseConnectionメソッドを呼び出すと,rapリスナーおよびrapサーバとの間で問い合わせ応答を行います。問い合わせを開始してから応答監視時間経過しても応答が返らない場合はタイムアウトになります。サービスを実行するための所要時間や通信速度を考慮して,適当な値を設定してください。
- setDccltinquiretimeメソッド
-
openConnectionメソッドを呼び出してCUPとの間で常設コネクションが確立されたrapリスナーおよびrapサーバは,closeConnectionメソッドが呼び出されるまでコネクションが確立されたままです。TP1/Client/Jに何らかの障害が発生してcloseConnectionメソッドが呼び出せなくなると,rapリスナーおよびrapサーバはいつまでも解放されません。これを防止するために,TP1/Client/Jから一定時間が経過しても問い合わせがないときに,rapリスナーおよびrapサーバ側で強制的に接続を解放するための時間を設定します。
なお,DCCM3が接続先のrapサーバの場合,setDccltinquiretimeメソッドの設定値は無効になります。
- setDccltdelayメソッド
-
rpcCallメソッドを呼び出すと,TP1/Client/J側ではsetDcwatchtimメソッドで指定した値で応答時間を監視しています。TP1/Client/JからのRPC要求を中継するrapサーバでは(setDcwatchtimメソッドで指定した時間 − setDccltdelayメソッドで指定した時間)分だけ応答を監視します。setDccltdelayメソッドで指定する時間は,TP1/Client/J,TP1/Server間の通信遅延時間です。TP1/Client/J側とrapサーバ側が同一時間で応答監視を行うと,TP1/Client/J側の方が応答監視開始が早い分,先にタイムアウトします。このためrapサーバ側で応答監視満了ぎりぎりの時間に応答を返しても,TP1/Client/J側がすでにタイムアウトしていて応答を受け取れないことがあります。このような現象を避けるため,このメソッドでrapサーバ側を先にタイムアウトさせます。なお,このメソッドでの指定値を有効にするには,TP1/Client/J環境定義でdcwatchtiminherit=Yを定義するか,またはsetRpcextendメソッドで,DRPC_WATCHTIMINHERIT引数を指定してください。