java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

org.omg.PortableInterceptor
接口 ORBInitializerOperations

所有已知子接口:
ORBInitializer

public interface ORBInitializerOperations

便于注册 interceptor 和初始化 ORB。

ORB 服务凭借 Interceptor 这一方法获得进行 ORB 处理的权力,Interceptor 实际上已成为 ORB 的一部分。因为 Interceptor 是 ORB 的一部分,所以当 ORB.init 返回 ORB 时,应该已经注册了 Interceptor。在已经调用 ORB.init 返回 Interceptor 后,不能在 ORB 上注册 Interceptor。

通过注册实现 ORBInitializer 接口的关联的 ORBInitializer 对象才能注册 Interceptor。ORB 在初始化时,应该调用每个已注册 ORBInitializer,并将用来注册其 Interceptor 的 ORBInitInfo 对象传递给该 ORB。

用 Java 注册 ORB Initializer

ORBInitializer 通过 Java ORB 属性注册。

属性名称的形式如下:

org.omg.PortableInterceptor.ORBInitializerClass.<Service>
其中 <Service> 是实现以下类的字符串名称:
org.omg.PortableInterceptor.ORBInitializer
要避免名称冲突,应使用与 DNS 名称约定相反的约定。例如,如果 X 公司有三个 initializer,则它能够定义以下属性:
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init1
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init2
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init3
在 ORB.init 期间,应该收集那些以 org.omg.PortableInterceptor.ORBInitializerClass 开头的属性,提取每个属性的 <Service> 部分,然后将该 <Service> 字符串作为类名来实例化某个对象,并对该对象调用 pre_initpost_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

注册 Interceptor 的有关注意事项:

每个 ORB 都要注册请求 Interceptor。

要获得虚拟的针对对象的 Interceptor,应在截取点内的目标上查询策略以确定它们是否应该执行某些操作。

要获得虚拟的针对 POA 的 Interceptor,应使用不同的 ORB 实例化每个 POA。虽然在管理上 Interceptor 是有序的,但注册 Interceptor 时并不需要按顺序进行。请求 Interceptor 参与服务上下文。服务上下文没有顺序,因此请求 Interceptor 也没有必要有顺序。IOR Interceptor 参与带标记的组件。带标记的组件没有顺序,因此 IOR Interceptor 也没有必要有顺序。

注册代码应该避免使用 ORB(即使用提供的 orb_id 调用 ORB.init)。因为注册发生在初始化 ORB 期间,对出于此状态的 ORB 进行调用的结果是不确定的。

另请参见:
ORBInitInfo

方法摘要
 void post_init(ORBInitInfo info)
          初始化 ORB 期间调用此方法。
 void pre_init(ORBInitInfo info)
          初始化 ORB 期间调用此方法。
 

方法详细信息

pre_init

void pre_init(ORBInitInfo info)
初始化 ORB 期间调用此方法。如果希望 interceptor 注册的初始服务可以供其他 interceptor 使用,则应该在此时通过调用 ORBInitInfo.register_initial_reference 注册那些初始服务。

参数:
info - 提供 Interceptor 据以注册的初始化属性和操作。

post_init

void post_init(ORBInitInfo info)
初始化 ORB 期间调用此方法。如果服务必须作为其初始化的一部分解析初始引用,则它应该假定此时所有的初始引用均可用。

调用 post_init 操作并不是初始化 ORB 的最后一项工作。调用 post_init 之后的最后一项工作是将已注册 interceptor 列表附加到 ORB。因此,在调用 post_init 期间,ORB 不包含 interceptor。如果从 post_init 内部进行间接 ORB 调用,则在该调用上不会调用任何请求 interceptor。类似的,如果执行了导致创建 IOR 的操作,也不会调用任何 IOR interceptor。

参数:
info - 提供 Interceptor 据以注册的初始化属性和操作。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策