Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


2.11.5 RMI-IIOP通信のタイムアウト

EJBクライアント−CORBAネーミングサービス間,EJBクライアント−Enterprise Bean間の通信に対して,タイムアウトを設定できます。また,EJBクライアントとJ2EEサーバの間にCTMを配置している場合,通信タイムアウトは,EJBクライアント−CTM間,およびCTM−J2EEサーバ間に設定できます。

RMI-IIOPの通信のタイムアウトには,EJBコンテナがRMI-IIOPの通信基盤として利用するTPBrokerのリクエストタイムアウト機能を利用します。

タイムアウトの設定は,設定する範囲によって,定義ファイルのプロパティ,またはアプリケーションサーバが提供するAPIのどちらかで行います。

〈この項の構成〉

(1) タイムアウトを設定できるRMI-IIOP通信

タイムアウトを設定できるRMI-IIOP通信を,CTM連携ありの場合となしの場合について図に示し,タイムアウトの設定範囲について説明します。

図2‒14 タイムアウトを設定できる通信(CTM連携ありの場合)

[図データ]

図2‒15 タイムアウトを設定できる通信(CTM連携なしの場合)

[図データ]

RMI-IIOP通信のタイムアウトは,図のA,B,Cの3か所に設定できます。

(2) 通信タイムアウトの設定範囲とタイミング

この機能による通信タイムアウトは,ORBに対して設定します。つまり,ORB配下のすべてのRMI-IIOP通信に対して設定されます。

設定のタイミングは,クライアント起動後の最初のnew javax.naming.InitialContext()実行時です。

CORBAネーミングサービスを利用しない場合でも,この機能を利用するときは,new javax.naming.InitialContext()をクライアントの処理の最初で実行してください。

(3) 通信タイムアウト発生時のクライアントの処理

クライアントからのリクエストに対してプロパティ指定値以内にレスポンスが返らない場合,該当リクエストはタイムアウトとしてキャンセルされます。この機能によって通信タイムアウトが発生した場合,java.rmi.RemoteException(org.omg.CORBA.TIMEOUT)の例外が発生します。この機能を利用するクライアントでは,Enterprise Beanのビジネスメソッド呼び出しなどで,この例外が発生することを考慮する必要があります。