对象请求代理服务的客户机端编程提示
每个因特网 InterORB 协议 (IIOP) 请求和响应交换都由客户机端 ORB 和服务器端 ORB 组成。 对使用 IIOP 的任何应用程序进行正确编程,以便与客户机端对象请求代理 (ORB) 通信很重要。
以下技巧有助于您确保对使用 IIOP 来处理请求和响应交换的应用程序进行正确编程,以便与客户机端对象请求代理 (ORB) 通信。
初始引用服务的解决方案
org.omg.CORBA.ORB.init(java.lang.String[] args,
java.util.Properties props)
您可以用客户机代码或命令行自变量设置这些属性。 可以通过使用多个 ORBInitRef 属性设置来指定多个服务位置(每个服务使用一个位置),但只能指定一个 ORBDefaultInitRef 值。 有关 ORB 用于查找服务的这两个属性和优先顺序的更多信息,请参阅 CORBA/IIOP 规范。
用客户机代码分别进行设置的这些属性是 com.ibm.CORBA.ORBInitRef.service_name 和 com.ibm.CORBA.ORBDefaultInitRef。 例如,要指定命名服务 (NameService) 位于端口 2809 上的 sample.server.com,那么要将 com.ibm.CORBA.ORBInitRef.NameService 属性设置为 corbaloc::sample.server.com:2809/NameService。
对于命令行自变量设置,这些属性分别为 -ORBInitRef 和 -ORBDefaultInitRef。 要找到先前指定的相同命名服务,请使用以下 Java™ 命令:
在为 ORB 支持的服务设置了这些属性后,Java Platform, Enterprise Edition (Java EE) 应用程序可以调用 ORB 上的 resolve_initial_references 功能(如 CORBA/IIOP 规范中的定义)来获取对给定服务的初始引用。
用于获取 ORB 实例的首选 API
对于 Java EE 应用程序,您可以使用以下任何一种方法。 然而,强烈建议您使用 Java 命名和目录接口 (JNDI) 方法来确保在整个客户端应用程序中使用相同的 ORB 实例;这样可以避免在使用不同的 ORB 实例时可能出现的意外不一致。
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb =
(org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"),
org.omg.CORBA.ORB.class);使用JNDI获取的ORB实例是一个单例对象,由所有Java EE在同一个 Java 虚拟机进程中运行的组件。java.util.Properties props = new java.util.Properties(); java.lang.String[] args = new java.lang.String[0]; org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);
与 JNDI 方法相比,CORBA 规范要求在每次调用 ORB.init 方法时创建新的 ORB 实例。 如果需要更改 ORB 缺省设置,那么可以将 ORB 属性设置添加到在 ORB.init 方法调用中传递的 Properties 对象。
不推荐使用 com.ibm.ejs.oa.EJSORB.getORBinstance 方法,但该方法在此产品的前发行版中是支持的。
在 Java EE 应用程序组件中共享 ORB 实例时的 API 限制
- 不要调用 ORB 关闭或销毁方法
- 不要调用 org.omg.CORBA_2_3.ORB 方法 register_value_factory 或 unregister_value_factory
另外,不要在不同的 Java EE 应用程序中的应用程序组件之间共享 ORB 实例。
需要使用随附的 rmic 和 idlj IBM开发套件
本产品使用的 Java 运行时环境 (JRE) 包括鳐和伊德利工具。 您可以使用这些工具为 CORBA/IIOP 协议生成 Java 语言绑定。
在产品安装过程中,工具安装在应用程序服务器根目录/java/ibm_bin目录。 Java 开发工具包中包含的这些工具的版本$JAVA_HOME/bin目录之外的目录IBM®随本产品安装的开发工具包与本产品不兼容。
当您安装此产品时,应用程序服务器根目录/java/ibm_bin目录包含在 $PATH 搜索顺序中,以便使用由提供的 rmic 和 idlj 脚本IBM 。 因为脚本在应用程序服务器根目录/java/ibm_bin目录而不是 JRE 标准应用程序服务器根目录/java/bin目录,在对未提供的 JRE 进行维护时,您不太可能覆盖它们IBM 。
除 rmic 和 idlj 工具之外,JRE 还包括接口定义语言 (IDL) 文件。 这些文件基于对象管理组 (OMG) 定义的内容,并可以被应用程序(它们需要所选 ORB 接口的 IDL 定义)使用。 文件放置在应用程序服务器根目录/java/ibm_lib目录。
在使用 rmic 或 idlj 工具之前,请确保应用程序服务器根目录/java/ibm_bin目录包含在环境中正确的 PATH 变量搜索顺序中。 如果您的应用程序使用 IDL 文件应用程序服务器根目录/java/ibm_lib目录,还要确保该目录包含在 PATH 变量中。