Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


20.4 VisiBroker 4.xインタセプタ間での情報の渡し方

Closure(Java)オブジェクトは,インタセプタ呼び出しのシーケンスの始めにORBによって生成されます。同じClosure(Java)オブジェクトがその特定のシーケンスのすべての呼び出しで使用されます。Closure(Java)オブジェクトには,一つのパブリックデータフィールドであるjava.lang.Objectタイプ(Java)のオブジェクトがあり,これは状態情報を保存するためにインタセプタが設定します。

Closureオブジェクトが生成されるシーケンスは,インタセプタ型によって異なります。

ClientRequestInterceptorでは,preinvoke_premarshalの呼び出し前に新しいClosure(Java)が生成され,リクエストの完了が成功してもしなくても,そのリクエストが完了するまで,そのリクエストで同じClosure(Java)が使用されます。ServerInterceptorでも同様に,新しいClosure(Java)はpreinvokeの呼び出し前に生成され,そのClosure(Java)が特定のリクエストの処理に関連するすべてのインタセプタ呼び出しで使用されます。

Closure(Java)の使用方法のサンプルについては,Borland Enterprise Server VisiBrokerインストレーションのexamples/vbe/interceptors/client_serverディレクトリを参照してください。

response_expectedとrequest_idを取得するために,Closure(Java)オブジェクトは次のようにExtendedClosure(Java)にキャストできます。

int my response_expected 
   =((ExtendedClosure)closure).reqInfo.response_expected;
int my request_id
   =((ExtendedClosure)closure).reqInfo.request_id;