EJBクライアント-CORBAネーミングサービス間,EJBクライアント-Enterprise Bean間の通信に対して,タイムアウトを設定できます。また,EJBクライアントとJ2EEサーバの間にCTMを配置している場合,通信タイムアウトは,EJBクライアント-CTM間,およびCTM-J2EEサーバ間に設定できます。
RMI-IIOPの通信のタイムアウトには,EJBコンテナがRMI-IIOPの通信基盤として利用するTPBrokerのリクエストタイムアウト機能を利用します。
タイムアウトの設定は,設定する範囲によって,定義ファイルのプロパティ,またはアプリケーションサーバが提供するAPIのどちらかで行います。
タイムアウトを設定できるRMI-IIOP通信を,CTM連携ありの場合となしの場合について図に示し,タイムアウトの設定範囲について説明します。
図2-14 タイムアウトを設定できる通信(CTM連携ありの場合)
図2-15 タイムアウトを設定できる通信(CTM連携なしの場合)
RMI-IIOP通信のタイムアウトは,図のA,B,Cの3か所に設定できます。
この機能による通信タイムアウトは,ORBに対して設定します。つまり,ORB配下のすべてのRMI-IIOP通信に対して設定されます。
設定のタイミングは,クライアント起動後の最初のnew javax.naming.InitialContext()実行時です。
CORBAネーミングサービスを利用しない場合でも,この機能を利用するときは,new javax.naming.InitialContext()をクライアントの処理の最初で実行してください。
クライアントからのリクエストに対してプロパティ指定値以内にレスポンスが返らない場合,該当リクエストはタイムアウトとしてキャンセルされます。この機能によって通信タイムアウトが発生した場合,java.rmi.RemoteException(org.omg.CORBA.TIMEOUT)の例外が発生します。この機能を利用するクライアントでは,Enterprise Beanのビジネスメソッド呼び出しなどで,この例外が発生することを考慮する必要があります。