クライアントアプリケーションが静的起動インタフェースでサーバメソッドを呼び出す場合、スタブ内の関数を発行します。サーバにリクエストを送信し、サーバからリプライ応答を受信すると、スタブ内の関数は復帰します。そのため、サーバアプリケーションのハングアップやネットワーク異常でリプライ応答を受信できない場合、スタブ内の関数が復帰せず、クライアントアプリケーションはハングアップすることになります。
クライアントタイムアウト機能を使用すると、リクエストを送信してから一定時間(クライアントタイムアウト時間)内にリプライ応答を受信できなかった場合にスタブ内の関数から復帰することが可能です。このとき、アプリケーションには、マイナーコード0x464a0101のCOMM_FAILURE例外が通知されます。
なお、クライアントタイムアウトが発生しても、サーバアプリケーション側のリクエスト処理がキャンセルされるわけではないのでご注意願います。
システム全体のクライアントタイムアウト時間の設定方法
CORBAサービスの動作環境ファイル(config)のperiod_receive_timeoutパラメタ、または、Interstage管理コンソールの[CORBAサービスの詳細設定]の“クライアントタイムアウト時間”パラメタで、そのシステムにおけるCORBAアプリケーションのクライアントタイムアウト時間を設定します。詳細は“チューニングガイド”または“Interstage管理コンソール ヘルプ”を参照してください。
Portable-ORBの場合は、porbeditenvコマンドの[タイムアウト時間]で設定します。詳細は“リファレンスマニュアル(コマンド編)”を参照してください。
スレッド単位のクライアントタイムアウト時間の設定方法
CORBAアプリケーションのメソッド毎にクライアントタイムアウト時間を変更したい場合、クライアントタイムアウト時間設定用のAPIを発行することにより、スレッド単位でクライアントタイムアウト時間を設定することが可能です。
各開発言語のクライアントタイムアウト時間設定用APIを以下に示します。詳細は“リファレンスマニュアル(API編)”を参照してください。
[開発言語] | [API名] |
---|---|
C言語 | CORBA_ORB_set_client_request_timer |
C++言語 | CORBA::ORB::set_client_request_timer |
Java | com.fujitsu.ObjectDirector.CORBA.ORB.set_client_request_timer |
COBOL | CORBA-ORB-SET-CLIENT-REQUEST-TIMER |
C言語、C++言語、Javaでは上記APIを使用したサンプルプログラムを提供しています。サンプルプログラムの作成および実行方法については“付録D サンプルプログラム”を参照してください。