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