20.2.2 サーバインタセプタ
4種類のサーバインタセプタがあります。
-
POALifeCycleInterceptorおよびPOALifeCycleInterceptorManager
-
ActiveObjectLifeCycleInterceptorおよびActiveObjectLifeCycleInterceptorManager
-
ServerRequestInterceptorおよびServerRequestInterceptorManager
-
IORCreationInterceptorおよびIORCreationInterceptorManager
サーバインタセプタの詳細については,「19. ポータブルインタセプタの使用」を参照してください。
- 〈この項の構成〉
(1) POALifeCycleInterceptor
POALifeCycleInterceptorオブジェクトはPOAが(create()メソッドによって)生成されるたび,または(destroy()メソッドによって)デストラクトされるたびに呼び出されるグローバルインタセプタです。
- コードサンプル20-3 POALifeCycleInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface POALifeCycleInterceptor { public void create(org.omg.PortableServer.POA poa, org.omg.CORBA.PolicyListHolder policies_holder, IORValueHolder iorTemplate, InterceptorManagerControl control); public void destroy(org.omg.PortableServer.POA poa); }
(2) ActiveObjectLifeCycleInterceptor
ActiveObjectLifeCycleInterceptorオブジェクトは,オブジェクトが(createメソッドによって)アクティブオブジェクトマップに追加された場合,またはオブジェクトが(destroyメソッドによって)停止し,エーテライズされたあとに呼び出されます。インタセプタは,POALifeCycleInterceptorによって,POA生成時にPOAごとに登録できます。このインタセプタは,POAにRETAINポリシーがある場合だけ登録できます。
- コードサンプル20-4 ActiveObjectLifeCycleInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface ActiveObjectLifeCycleInterceptor { public void create(byte[ ] oid,, org.omg.PortableServer.Servant servant, org.omg.PortableServer.POA adapter); public void destroy (byte[ ] oid,, org.omg.PortableServer.Servant servant, org.omg.PortableServer.POA adapter); }
(3) ServerRequestInterceptor
ServerRequestInterceptorオブジェクトは,リモートオブジェクトのサーバインプリメンテーションの起動中のさまざまな段階,例えば(preinvokeメソッドによる)起動前,(postinvoke_premarshalおよびpostinvoke_premarshalメソッドによる)応答のマーシャル前後の起動後に呼び出されます。このインタセプタは,POAごとに,POAの生成時にPOALifeCycleInterceptorオブジェクトによって登録できます。
- コードサンプル20-5 ServerRequestInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface ServerRequestInterceptor { public void preinvoke(org.omg.CORBA.Object target, String operation, ServiceContext [ ] service_contexts, InputStream payload, Closure closure); public void postinvoke_premarshal(org.omg.CORBA.Object target, ServiceContextListHolder service_contexts_holder, org.omg.CORBA.Environment env, Closure closure); public void postinvoke_postmarshal(org.omg.CORBA.Object target, OutputStream payload, Closure closure); public void exception_occurred(org.omg.CORBA.Object target, org.omg.CORBA.Environment env, Closure closure); }
(4) IORCreationInterceptor
IORCreationInterceptorオブジェクトは,POAが(createメソッドによって)オブジェクトリファレンスを生成する場合に呼び出されます。このインタセプタは,POAごとに,POAの生成時にPOALifeCycleInterceptorオブジェクトによって登録できます。
- IDLサンプル20-1 IORCreationInterceptorインタフェース(Java)
package com.inprise.vbroker.InterceptorExt; public interface IORCreationInterceptor { public void create(org.omg.PortableServer.POA poa, IORValueHolder ior); }