Hitachi

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


19.2.8 ポータブルインタセプタの登録

ポータブルインタセプタは使用前にBorland Enterprise Server VisiBroker ORBに登録する必要があります。ポータブルインタセプタを登録するには,ORBInitializerオブジェクトをインプリメントして,登録する必要があります。ポータブルインタセプタは,pre_init ()メソッドもしくはpost_init()メソッド,またはその両方をインプリメントする対応ORBInitializerオブジェクトを登録することによって,ORB初期化時に実体化されて登録されます。Borland Enterprise Server VisiBroker ORBは,初期化プロセス時にORBInitInfoオブジェクトに登録された各ORBInitializerを呼び出します。

コードサンプル19-17 ORBInitializerクラス(C++)
class _VISEXPORT ORBInitializer
{
   public:
      virtual void pre_init(ORBInitInfo_ptr _info)=0;
      virtual void post_init(ORBInitInfo_ptr _info)=0;
};
コードサンプル19-18 ORBInitInfoクラス(C++)
class _VISEXPORT ORBInitInfo
{
   public:
      virtual CORBA::StringSequence*arguments()=0;
      virtual char*orb_id()=0;
      virtual IOP::CodecFactory_ptr codec_factory()=0;
      virtual void register_initial_reference(const char*_id,
         CORBA::Object_ptr _obj)=0;
      virtual CORBA::Object_ptr resolve_initial_references
         (const char*_id)=0;
      virtual void add_client_request_interceptor(
         ClientRequestInterceptor_ptr _interceptor)=0;
      virtual void add_server_request_interceptor(
         ServerRequestInterceptor_ptr _interceptor)=0;
      virtual void add_ior_interceptor(IORInterceptor_ptr
                                              _interceptor)=0;
      virtual CORBA::ULong allocate_slot_id()=0;
      virtual void register_policy_factory(CORBA::ULong _type,
         PolicyFactory_ptr _policy_factory)=0;
};
コードサンプル19-19 ORBInitializerインタフェース(Java)
package org.omg.PortableInterceptor;
 
public interface ORBInitializer
   extends org.omg.CORBA.portable.IDLEntity,
      org.omg.CORBA.LocalInterface
{
   public void pre_init(ORBInitInfo info);
   public void post_init(ORBInitInfo info);
}
コードサンプル19-20 ORBInitInfoインタフェース(Java)
package org.omg.PortableInterceptor;
 
public interface ORBInitInfo
   extends org.omg.CORBA.portable.IDLEntity,org.omg.CORBA.LocalInterface
{
   public java.lang.String[ ] arguments(();
   public java.lang.String orb_id();
   public CodecFactory codec_factory();
   public void register_initial_reference
      (java.lang.String id,org.omg.CORBA.Object obj)
      throws InvalidName;
   public void resolve_initial_references(java.lang.String id)
      throws InvalidName;
   public void add_client_request_interceptor
      (ClientRequestInterceptor interceptor)
      throws DuplicateName;
   public void add_server_request_interceptor
      (ServerRequestInterceptor interceptor)
      throws DuplicateName;
   public void add_ior_interceptor(IORInterceptor interceptor)
      throws DuplicateName;
   public int allocate_slot_id();
   public void register_policy_factory
      (int type,PolicyFactory policy_factory);
}