Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス


12.5.2 ポリシーの値

RebindPolicyとして設定できるOMGのポリシー値について,次の表に示します。

表12‒1 OMGのポリシー値(Java)

ポリシー値

説明

TRANSPARENT

このポリシーは,リモートリクエスト実行時に,オブジェクト障害後osagentを使用してほかのオブジェクトを呼び出すことと必要な再接続処理をVisiBroker ORBが暗黙的に実行することを許可します。これは,最も制限を加えない値です。

NO_REBIND

このポリシーは,リモートリクエスト実行時に,クローズしたコネクションの再開をVisiBroker ORBが暗黙的に実行することを許可します。ただし,クライアント側で有効になっているQoSポリシーに変更を加えるような,透過的な呼び出し(オブジェクト障害後osagentを使用してほかのオブジェクト呼び出すこと)は許可しません。

NO_RECONNECT

このポリシーは,オブジェクト障害後osagentを使用してほかのオブジェクトを呼び出すことと,クローズしたコネクションの再開をVisiBroker ORBが暗黙的に実行することを禁止します。これは,最も制限を加える値です。

次の条件がすべて重なる場合,サーバへの呼び出しをするとMARSHAL例外またはDATA_CONVERSION例外が発生します。

  • 複数のスレッドで同じオブジェクトリファレンスを使用する。

  • QoSのRebindPolicyにNO_RECONNECT以外を指定する。

  • サーバが再起動,またはサーバへの呼び出しでタイムアウトが発生することによってコネクションが切断され,透過的な再接続処理が行われる。

  • 次のデータ型を使用する。

    char

    java.lang.String

    java.lang.Object

RebindPolicyに設定できるVisiBroker固有のポリシー値について,次の表に示します。

表12‒2 VisiBroker固有のポリシー値(Java)

ポリシー値

説明

com.inprise.vbroker.QoSExt.VB_TRANSPARENT

これは,TRANSPARENTのオブジェクト障害後osagentを使用したほかのオブジェクトの呼び出しをする動作を継承したポリシーです。これはデフォルトポリシーです。

サーバダウンが原因でリモート呼び出しが失敗するときにこのポリシーを設定すると,VisiBroker ORBはosagentを使用してほかのサーバへの再接続を試みます。リバインドに成功すると,クライアントのVisiBroker ORBは通信障害をマスクし,呼び出し元のスレッドに例外を返しません。

com.inprise.vbroker.QoSExt.VB_NOTIFY_REBIND

VB_NOTIFY_REBINDはVB_TRANSPARENTと同様の動作をしますが,通信障害を検知した場合に例外を発生します。もう一度呼び出しをすると,このポリシーは,ほかのオブジェクトへの透過的な再接続を試みます。

com.inprise.vbroker.QoSExt.VB_NO_REBIND

VB_NO_REBINDは,オブジェクト障害後,osagentを使用してほかのオブジェクトを呼び出すことを有効にしません。また,オブジェクトの転送も許可しません。クライアントVisiBroker ORBが,同じサーバに対してクローズしたコネクションを再開することだけを許可します。

ユーザのクライアントの有効ポリシーがVB_TRANSPARENTであり,かつ状態データを保存しているサーバと連携している場合,VB_TRANSPARENTはそのクライアントを新規サーバに接続することがあります。この場合,クライアントはサーバが変更されたことを認識しないで,元のサーバに保存されていた状態データは失われます。

クライアントでRebindPolicyにNO_RECONNECTまたはVB_NO_REBINDを設定した場合,かつ,初回リクエストでオブジェクト転送が発生した場合,オブジェクト転送を許可します。