-
- All Known Subinterfaces:
-
ORBInitializer
public interface ORBInitializerOperations
方便拦截器注册和ORB初始化。拦截器旨在成为ORB服务获得ORB处理的一种手段,有效地成为ORB的一部分。 由于拦截器是ORB的一部分,当
ORB.init
返回ORB时,拦截器已被注册。 在通过电话ORB.init
返回后,拦截器无法在ORB上注册。通过注册实现
ORBInitializer
接口的相关联的ORBInitializer
对象来注册拦截器。 当ORB正在初始化时,它将调用每个注册的ORBInitializer
,传递一个用于注册其拦截器的ORBInitInfo
对象。在Java中注册ORB初始化器
ORBInitializers通过Java ORB属性注册。
财产名称的格式如下:
org.omg.PortableInterceptor.ORBInitializerClass.<Service>
<Service>
是实现的类的字符串名称org.omg.PortableInterceptor.ORBInitializer
-
org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init1
-
org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init2
-
org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init3
org.omg.PortableInterceptor.ORBInitializerClass
开头的ORB属性,提取每个属性的<Service>
部分,对象应以<Service>
字符串作为其类名进行实例化,并应调用pre_init
和post_init
方法那个对象。 如果有任何例外,ORB将忽略它们并继续进行。例
例如,由公司X编写的客户端日志记录服务可能具有以下ORBInitializer实现:
package com.x.logging; import org.omg.PortableInterceptor.Interceptor; import org.omg.PortableInterceptor.ORBInitializer; import org.omg.PortableInterceptor.ORBInitInfo; public class LoggingService implements ORBInitializer { void pre_init( ORBInitInfo info ) { // Instantiate the Logging Service s Interceptor. Interceptor interceptor = new LoggingInterceptor(); // Register the Logging Service s Interceptor. info.add_client_request_interceptor( interceptor ); } void post_init( ORBInitInfo info ) { // This service does not need two init points. } }
MyApp
的程序,用户可以键入:java -Dorg.omg.PortableInterceptor.ORBInitializerClass.com.x.Logging.LoggingService MyApp
关于注册拦截器的注意事项
请求拦截器以每ORB的形式进行注册。
要实现虚拟的每个对象拦截器,从截取点内查询目标上的策略,以确定它们是否应该做任何工作。
为了实现虚拟的每个POA拦截器,用不同的ORB实例化每个POA。 虽然拦截器可能被行政命令,但是关于拦截器的注册没有关于秩序的概念。 请求拦截器涉及服务环境。 服务上下文没有任何命令,因此请求拦截器无需订单。 IOR拦截器涉及标记的组件。 标签组件也没有任何命令,因此IOR Interceptor不能有订单。
注册代码应该避免使用ORB(即,主叫
ORB.init
与所提供的orb_id
)。 由于在ORB初始化期间发生注册,因此在此ORB处于此状态时调用的结果未定义。- 另请参见:
-
ORBInitInfo
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 void
post_init(ORBInitInfo info)
在ORB初始化期间调用。void
pre_init(ORBInitInfo info)
在ORB初始化期间调用。
-
-
-
方法详细信息
-
pre_init
void pre_init(ORBInitInfo info)
在ORB初始化期间调用。 如果期望由拦截器注册的初始服务将被其他拦截器使用,那么这些初始服务应通过呼叫ORBInitInfo.register_initial_reference
在此注册。- 参数
-
info
- 提供可以注册拦截器的初始化属性和操作。
-
post_init
void post_init(ORBInitInfo info)
在ORB初始化期间调用。 如果服务必须在初始化时解析初始引用,那么可以假设所有初始引用在这一点上都可用。调用
post_init
操作不是ORB初始化的最后任务。 按照post_init
电话的最后一个任务是将已注册拦截器的列表附加到ORB。 因此,在调用post_init
期间,ORB不包含拦截器。 如果ORB中介的呼叫是在post_init
内post_init
,那么该调用将不会调用请求拦截器。 同样,如果执行导致创建IOR的操作,则不会调用IOR拦截器。- 参数
-
info
- 提供可以注册拦截器的初始化属性和操作。
-
-