Cosminexus 機能解説
EJBクライアントからリモートインタフェースとして定義されたEJBメソッドが呼び出しを実施している際に通信障害が発生したときのクライアント側の動作を次のどちらかから選択できます。
なお,この機能を使用するための設定は,J2EEサーバ,WebコンテナサーバまたはEJBクライアントアプリケーションのプロパティとして設定します。設定方法については,マニュアル「Cosminexus システム構築ガイド」の次の説明を参照してください。
なお,EJBクライアントアプリケーションの場合は,API(java.lang.SystemクラスのsetPropertyメソッドなど)で設定することもできます。java.lang.System.setPropertyメソッドで定義する場合は,EJBクライアントアプリケーションのプロセス起動後,最初にEnterprise Beanのメソッドを呼び出す前に定義してください。
通信障害発生時の動作は,リモートインタフェースとして定義されたEJBメソッドの呼び出しで通信障害が起きた場合に有効になります。EJBメソッドの呼び出しとは,次の呼び出しを指します。
設定が有効となる通信を次の図に示します。
図5-28 設定が有効になる通信
なお,次の場合は無効になるので注意してください。
システムの形態によって,次のように設定することをお勧めします。
システムプロパティのejbserver.container.rebindpolicyキーで"NO_RECONNECT"(再接続なし/再送なし)を選択した場合,通信障害によってコネクションが切断されると,再接続が抑止されているため該当するオブジェクトリファレンスは再利用できなくなります。このため,EJBクライアントでは,次回Enterprise Beanのメソッド呼び出しをする場合には,EJBホームオブジェクトのときはlookupメソッド,EJBオブジェクトのときはcreateメソッドを再実行したあと,メソッド呼び出しを実行してください。なお,Enterprise Beanのメソッド呼び出し中にコネクションが切断された場合,メソッドは次のどちらかの例外を送出します。
これらの例外をキャッチするクライアントのコーディング例を次に示します。
try { //JNDI.lookup() //EJBHome.create() //EJBObject.invoke() } catch (java.rmi.MarshalException e) { if (e.detail instanceof org.omg.CORBA.COMM_FAILURE) { //通信障害に対応する処理 } } catch (java.rmi.RemoteException e) { if (e.detail instanceof org.omg.CORBA.REBIND) { //通信障害に対応する処理 } } |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.