public interface ORBInitInfoOperations
 传递给每个 ORBInitializer,允许其在初始化 ORB 时注册 interceptor 并执行其他职责。 
 ORBInitInfo 对象只在 ORB.init 期间有效。如果服务保持对其 ORBInitInfo 对象的引用,并试图在 ORB.init 返回后使用该对象,则该对象将不再存在,并抛出 OBJECT_NOT_EXIST 异常。 
ORBInitializer
   | 方法摘要 | |
|---|---|
  void |  
     add_client_request_interceptor(ClientRequestInterceptor interceptor) 此方法用来将客户端的请求 Interceptor 添加到客户端请求 Interceptor 列表。  |  
    
  void |  
     add_ior_interceptor(IORInterceptor interceptor) 此方法用来将 IOR Interceptor 添加到 IOR Interceptor 列表。  |  
    
  void |  
     add_server_request_interceptor(ServerRequestInterceptor interceptor) 此方法用来将服务器端的请求 Interceptor 添加到服务器端请求 Interceptor 列表。  |  
    
  int |  
     allocate_slot_id() 调用此方法来在 PortableInterceptor.Current 上分配槽 (slot)。 |  
    
  String[] |  
     arguments() 返回传递给 ORB.init 的参数。 |  
    
  CodecFactory |  
     codec_factory() 返回 IOP.CodecFactory。 |  
    
  String |  
     orb_id() 返回将被初始化的 ORB 的 ID。  |  
    
  void |  
     register_initial_reference(String id, Object obj) 等同于 ORB.register_initial_reference。 |  
    
  void |  
     register_policy_factory(int type, PolicyFactory policy_factory) 注册给定 PolicyType 的 PolicyFactory。 |  
    
  Object |  
     resolve_initial_references(String id) 等同于 ORB.resolve_initial_references。 |  
    
| 方法详细信息 | 
|---|
String[] arguments()
ORB.init 的参数。它们可能包含 ORB 的参数,也可能不包含。 
    
String orb_id()
CodecFactory codec_factory()
IOP.CodecFactory。通常通过调用 
    ORB.resolve_initial_references( "CodecFactory" ) 获取 
    CodecFactory,但是因为 ORB 当前不可用,而且 Interceptor(尤其是在处理服务上下文时)将请求 
    Codec,所以必须在初始化 ORB 时获取 
    Codec 的方法。 
    
void register_initial_reference(String id, Object obj) throws InvalidName
ORB.register_initial_reference。这里提供一个具有相同功能的方法是因为:未完全初始化的 ORB 当前不可用,但是初始引用可能需要作为 Interceptor 注册的一部分被注册。唯一的不同之处在于,ORB 中的这一操作使用 PIDL (
    CORBA.ORB.ObjectId) 和 (
    CORBA.ORB.InvalidName),而此接口中的这一操作使用此接口中定义的 IDL;语义是等同的。 
    
InvalidName
     Object resolve_initial_references(String id) throws InvalidName
ORB.resolve_initial_references。这里提供一个具有相同功能的方法是因为:未完全初始化的 ORB 当前不可用,但是 ORB 中的初始引用可能需要作为 Interceptor 注册的一部分。唯一的不同之处在于,ORB 中的这一操作使用 PIDL (
    CORBA::ORB::ObjectId) 和 (
    CORBA::ORB::InvalidName),而此接口中的这一操作使用此接口中定义的 IDL;语义是等同的。 
    此操作仅在 post_init 期间有效。
InvalidName
     void add_client_request_interceptor(ClientRequestInterceptor interceptor) throws DuplicateName
interceptor - 要添加的 
      ClientRequestInterceptor。 
     DuplicateName - 如果客户端的请求 Interceptor 已经使用此 Interceptor 的名称注册。
     void add_server_request_interceptor(ServerRequestInterceptor interceptor) throws DuplicateName
interceptor - 要添加的 ServerRequestInterceptor。 
     DuplicateName - 如果服务器端的请求 Interceptor 已经使用此 Interceptor 的名称注册。
     void add_ior_interceptor(IORInterceptor interceptor) throws DuplicateName
interceptor - 要添加的 IORInterceptor。 
     DuplicateName - 如果 IOR Interceptor 已经使用此 Interceptor 名称注册。
     int allocate_slot_id()
PortableInterceptor.Current 上分配槽 (slot)。 
    注意,可以在 ORB 初始化程序中分配槽的 id,但不能初始化槽本身。
BAD_INV_ORDER - 如果在 ORB 初始化程序内对 
      PICurrent 调用 
      set_slot 或 
      get_slot,则抛出此异常并带有标准次要代码 14。
     Current
     
void register_policy_factory(int type,
                             PolicyFactory policy_factory) 
  PolicyType 的 
    PolicyFactory。 
    
type - 给定 
      PolicyFactory 服务的策略类型。
     policy_factory - 给定策略类型的工厂。 
     BAD_INV_ORDER - 如果已经存在给定 
      PolicyType 的 
      PolicyFactory,则抛出此异常并带有标准次要代码 16。