クライアントアプリケーションが静的起動インタフェースでサーバメソッドを呼び出す場合、スタブ内の関数を発行します。サーバにリクエストを送信し、サーバからリプライ応答を受信すると、スタブ内の関数は復帰します。そのため、サーバアプリケーションのハングアップやネットワーク異常でリプライ応答を受信できない場合、スタブ内の関数が復帰せず、クライアントアプリケーションはハングアップすることになります。
クライアントタイムアウト機能を使用すると、リクエストを送信してから一定時間(クライアントタイムアウト時間)内にリプライ応答を受信できなかった場合に、スタブ内の関数から復帰することが可能です。このとき、アプリケーションには、マイナーコード“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 サンプルプログラム”を参照してください。