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

[目次][索引][前へ][次へ]

20.2.2 サーバインタセプタ

4種類のサーバインタセプタがあります。

サーバインタセプタの詳細については,「19. ポータブルインタセプタの使用」を参照してください。

<この項の構成>
(1) POALifeCycleInterceptor
(2) ActiveObjectLifeCycleInterceptor
(3) ServerRequestInterceptor
(4) IORCreationInterceptor

(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);
}