ポータブルインタセプタは使用前にBorland Enterprise Server VisiBroker ORBに登録する必要があります。ポータブルインタセプタを登録するには,ORBInitializerオブジェクトをインプリメントして,登録する必要があります。ポータブルインタセプタは,pre_init ()メソッドもしくはpost_init()メソッド,またはその両方をインプリメントする対応ORBInitializerオブジェクトを登録することによって,ORB初期化時に実体化されて登録されます。Borland Enterprise Server VisiBroker ORBは,初期化プロセス時にORBInitInfoオブジェクトに登録された各ORBInitializerを呼び出します。
class _VISEXPORT ORBInitializer
{
public:
virtual void pre_init(ORBInitInfo_ptr _info)=0;
virtual void post_init(ORBInitInfo_ptr _info)=0;
};
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;
};
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);
}
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);
}