20.2.1 クライアントインタセプタ
次の2種類のクライアントインタセプタとそれに対応するマネージャがあります。
-
BindInterceptorおよびBindInterceptorManager
-
ClientRequestInterceptorおよびClientRequestInterceptorManager
クライアントインタセプタの詳細については,「19. ポータブルインタセプタの使用」を参照してください。
(1) BindInterceptor
BindInterceptorオブジェクトは,バインド前後にクライアント側で呼び出されるグローバルインタセプタです。
- コードサンプル20-1 BindInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface BindInterceptor { public IORValue bind(IORValue ior, org.omg.CORBA.Object target, boolean rebind, Closure closure); public IORValue bind_failed(IORValue ior, org.omg.CORBA.Object target, Closure closure); public void bind_succeeded(IORValue ior, org.omg.CORBA.Object target, int Index, InterceptorManagerControl control, Closure closure); public void exception_occurred(IORValue ior, org.omg.CORBA.Object target, org.omg.CORBA.Environment env, Closure closure); }
(2) ClientRequestInterceptor
ClientRequestInterceptorオブジェクトは,BindInterceptorオブジェクトのbind_succeeded呼び出し中に登録できます。またこれは,コネクション期間中アクティブのままです。このメソッドのうちの二つは,クライアントオブジェクトの起動前に呼び出されます。一つ(preinvoke_premarshal)は,パラメタがマーシャルされる前に,もう一つ(preinvoke_postmarshal)は,パラメタがマーシャルされたあとに呼び出されます。三つ目のメソッド(postinvoke)は,リクエストの完了後に呼び出されます。
- コードサンプル20-2 ClientRequestInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface ClientRequestInterceptor { public void preinvoke_premarshal(org.omg.CORBA.Object target, String operation, ServiceContextListHolder service_contexts_holder, Closure closure); public void preinvoke_postmarshal(org.omg.CORBA.Object target, OutputStream payload, Closure closure); public void postinvoke(org.omg.CORBA.Object target, ServiceContext [ ] service_contexts, InputStream payload, org.omg.CORBA.Environment env, Closure closure); public void exception_occurred(org.omg.CORBA.Object target, org.omg.CORBA.Environment env, Closure closure); }