Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

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

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

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

<この項の構成>
(1) タイムアウトを設定できるRMI-IIOP通信
(2) 通信タイムアウトの設定範囲とタイミング
(3) 通信タイムアウト発生時のクライアントの処理
(4) 通信タイムアウトの設定方法
(5) 通信タイムアウト設定時の注意事項

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

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

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

[図データ]

図5-13 タイムアウトを設定できる通信(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のビジネスメソッド呼び出しなどで,この例外が発生することを考慮する必要があります。

(4) 通信タイムアウトの設定方法

タイムアウトの設定は,設定する範囲によって,定義ファイルのプロパティ,またはCosminexusが提供するAPIのどちらかで行います。プロパティで設定する方法とAPIで設定する方法の概要を説明します。

(a) プロパティで設定する方法

図5-12,図5-13のAまたはBを設定する方法です。プロパティで設定する場合,タイムアウトの設定方法はEnterprise Beanがどこから呼び出されるかによって異なります。設定は,呼び出し元(EJBクライアント側)のJ2EEサーバ,WebコンテナサーバまたはEJBクライアントアプリケーションのプロパティとして設定します。

次に,Enterprise Beanを呼び出すEJBクライアントの形態ごとの設定方法を示します。

●Enterprise Beanの場合

クライアント側のEnterprise Beanが動作するJ2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

●JSP,サーブレットの場合

クライアント側のJSP,サーブレットが動作するJ2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

●EJBクライアントアプリケーションの場合

EJBクライアントアプリケーションの実行時に有効なプロパティとして設定します。EJBクライアントアプリケーションのプロパティの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(b) APIで設定する方法

図5-12,図5-13のCを設定する方法です。APIで設定する場合,com.hitachi.software.ejb.ejbclientパッケージのAPIを利用します。APIの機能と文法については,マニュアル「Cosminexus リファレンス API編」を参照してください。

RMI-IIOPの通信タイムアウトは,クライアントのプロセス起動後の,最初のInitialContext生成時にプロパティに指定した値が設定されます。ネーミングサービスを利用しない場合でも,RMI-IIOPの通信タイムアウトを設定する場合は,InitialContextを生成する必要があります。

ネーミングサービスの通信タイムアウトを設定する場合は,InitialContext生成やlookupなどの,JNDIのAPI呼び出し時にプロパティに指定した値が設定されます。

(5) 通信タイムアウト設定時の注意事項

通信タイムアウト設定時の注意事項について説明します。