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