在客户端查找本机java CORBA的超时属性



我使用的是CORBA (ORB),其中是Java自带的,没有使用第三方库。

我需要CORBA客户端超时属性,以便在客户端设置超时并限制连接保持打开的时间;它应该为所有场景设置,以限制最大请求时间:

  • 初始化连接

  • 重新绑定连接

  • 请求总时间

我通过在服务器上放置睡眠(在服务器方法逻辑中)进行测试,并且客户端根本没有超时

在网上很难找到合适的文档;我尝试使用以下所有属性,但都无济于事:

aProperties.put("com.sun.CORBA.transport。ORBTCPReadTimeouts"、"100:300:3000:20");aProperties.put("com.sun.corba.eetransport。ORBTCPTimeouts"、"500:2000:50:1000");aProperties.put("com.sun.corba.ee.transport。

ORBWaitForResponseTimeout",10);

为了更清晰,在这些属性(上面)的旁边是使用属性org.omg.CORBA设置主机和端口。ORBInitialHost and org.omg.CORBA.ORBInitialPort.

任何帮助都是感激的:)

请阅读Oracle博客了解更多关于超时的信息。这对我帮助很大。

在com.sun.corba. bee .impl.orbutil. orbconstants中有许多ORB配置参数(注意这是GlassFish ORB,而不是JDK ORB)。与传输超时相关的常量是:
  • TRANSPORT_TCP_TIMEOUTS_PROPERTY

当ORB读取数据而不是一次获取所有数据时,这控制重试行为。它是tcptimeout的一个实例。默认值为2000:6000:20。

  • TRANSPORT_TCP_CONNECT_TIMEOUTS_PROPERTY

这是一个相关的讨论。当尝试连接到IOR (EJB引用的连接代表)时,它控制ORB在客户端的行为。这也是tcptimeout的一个实例。默认值为250:60000:100:5000。

  • WAIT_FOR_RESPONSE_TIMEOUT

控制客户端在成功发送请求后等待响应的时间。默认为30分钟。两个tcptimeout使用相同的语法进行配置:

initial:max:backoff[:maxsingle](以:分隔的3或4个正十进制整数)

地点:

  • initial是第一个超时,以毫秒为单位
  • max是最大等待时间(在最后一次等待之前,可以超过这个时间),以毫秒为单位
  • backoff是每次超时增加的后退因子(乘法实际上是(backoff+100)/100,所以是20等于1.2,而100等于2,但这里我们避免使用任何浮点数)。这通常应该在10到100之间。
  • maxsingle为最大单次等待时间。这是可选的,默认为Integer。MAX_VALUE如果没有定义。

操作如下:

第一个超时时间为初始毫秒。每个后续超时都是通过乘以后退因子(如上所述)从前一个超时获得的。任何超时都不能超过maxsingle毫秒:一旦达到这个值,任何后续的超时都具有相同的值。在最后一次超时之前花费的总时间小于max。请注意,最后一次超时可能会导致总时间超过max。

我可以确认对于glassfish 3.1.2.2,在某些CORBA属性中建议的解决方案被忽略确实有效。

所需的系统属性可以设置为java命令参数

java -Dcom.sun.corba.ee.transport.ORBWaitForResponseTimeout=5000 -Dcom.sun.corba.ee.transport.ORBTCPConnectTimeouts=100:500:100:500 -Dcom.sun.corba.ee.transport.ORBTCPTimeouts=500:2000:50:1000 -cp ..

或在代码中使用

System.setProperty("com.sun.corba.ee.transport.ORBWaitForResponseTimeout","5000");

必须将ORB参数设置为系统属性。如果将它们用作InitialContext的属性,则没有效果。

相关内容

  • 没有找到相关文章