管理控制台中的对象请求代理服务设置

使用此页面配置 Java 对象请求代理(ORB)服务。

要查看此管理控制台页面,单击服务器 > 应用程序服务器 > 服务器名 > ORB 服务

有几个设置可用于控制内部对象请求代理(ORB)处理。在应用程序包含企业 bean 的情况下,您可使用这些设置改进应用程序性能。您可为缺省服务器或在管理域中配置的任何应用程序服务器更改这些设置。

“配置”选项卡

请求超时  
指定请求消息超时前等待的秒数。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.RequestTimeout。

数据类型 int
单位
缺省 180
范围 0 到 300
请求重试计数  
指定服务器发生故障时 ORB 尝试发送请求的次数。重试有时会启用从瞬时网络故障的恢复。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.requestRetriesCount。

数据类型 int
缺省 1
范围 1 到 10
请求重试延迟  
指定请求重试之间的毫秒数。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.requestRetriesDelay。

数据类型 int
单位 毫秒
缺省 0
范围 0 到 60
连接高速缓存最大值  
指定允许占用服务的连接高速缓存的最大连接数。如果存在很多并发客户机连接到服务器端 ORB,可增加次参数以支持多个 1000 个客户机的重负载。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.MaxOpenConnections。

数据类型 整型
单位 连接
缺省 240
连接高速缓存最小值  
指定允许占用服务的连接高速缓存的最小连接数。
数据类型 整型
单位 连接
缺省 100
ORB 跟踪  
启用 ORB GIOP 消息的跟踪。

这个设置影响两个系统属性:com.ibm.CORBA.Debug 和 com.ibm.CORBA.CommTrace。如果您通过命令行脚本编制设置这些属性,则您必须设置两个都为以启用跟踪 GIOP 消息。

数据类型 Boolean
缺省 不启用(
定位请求超时  
指定请求定位消息超时前等待的秒数。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.LocateRequestTimeout。

数据类型 int
单位
缺省 180
范围 0 到 300
强制通道  
控制客户机 ORB 如何尝试使用 HTTP 通道穿越。

对于直接访问,此属性的全名为 com.ibm.CORBA.ForceTunnel。

数据类型 String
缺省 NEVER
范围 有效值是总是从不请求时

关于有效值的其它信息如下所示:

总是
不尝试 TCP 连接,立即使用 HTTP 隧道穿越。
从不
禁用 HTTP 隧道穿越。如果 TCP 连接失败,则抛出 CORBA 系统异常(COMM_FAILURE)。
请求时
TCP 连接失败时使用 HTTP 通道穿越。

隧道代理程序 URL  
用于支持 HTTP 通道穿越的 servlet 的 URL。

必须是正确格式的 URL,如 http://w3.mycorp.com:81/servlet/com.ibm.CORBA.services.IIOPTunnelServlet 或,对于 applet,http://applethost:port/servlet/com.ibm.CORBA.services.IIOPTunnelServlet。 如果设置了 HTTP 隧道穿越,此字段是必需的。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.TunnelAgentURL。

按引用传递  
指定 ORB 如何传递参数。如果已启用,ORB 通过引用而不是值传递参数,这避免了制作对象副本。如果您未启用按引用传递,完成每个远程方法调用前参数可复制到堆栈,这可能是昂贵的。

如果 EJB 客户机和 EJB 服务器安装在相同的 WebSphere Application Server 实例上,客户机和服务器使用远程接口,启用按引用传递可以改进性能多达 50%。仅当非原语对象类型作为参数传递时,按引用传递才有助于性能。因此,整型和浮点总是复制,无论调用模型是什么。

启用此属性要特别注意,因为可能发生意外行为。如果对象引用由远程方法修改,则调用者可能更改。

对于使用命令行脚本编制,此系统属性的全名为 com.ibm.CORBA.iiop.noLocalCopies。

数据类型 Boolean
缺省 未启用(false)

此选项对于带有远程接口的企业 bean 的使用违反 EJB 规范 V2.0(请参阅 5.4 节)。不复制传递到 EJB 方法或 EJB 起始对象方法的对象引用,并且可能导致破坏。

考虑以下示例:

Iterator iterator = collection.iterator();
MyPrimaryKey pk = new MyPrimaryKey();
while (iterator.hasNext()) {
   pk.id = (String) iterator.next();
   MyEJB myEJB = myEJBHome.findByPrimaryKey(pk);
}

本示例中,对相同 MyPrimaryKey 对象的引用每次都传递到有不同标识值的 WebSphere Application Server。启用按引用传递运行此代码导致应用程序服务器内的问题,这是因为多个企业 bean 正在引用相同的 MyPrimaryKey 对象。要避免发生此问题,当启用按引用传递时设置系统属性 com.ibm.websphere.ejbcontainer.allowPrimaryKeyMutation 为 true。将按引用传递设置为 true 导致 EJB 容器制作 PrimaryKeycauses 对象的本地副本。但结果是会丢失一小部分按引用传递的设置的性能优势。

作为一般规则,作为参数传递到企业 bean 方法或 EJB 起始对象方法的对象引用的任何应用程序代码必须仔细检查,以确定传递该对象引用是否会导致损失数据完整性或其它问题。

相关信息

管理控制台按钮
线程池设置