[英]Looking for the timeout properties of native java CORBA on the client-side
我使用的是原生Java附带的 CORBA (ORB),没有使用第三方库。
我需要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和org.omg.CORBA.ORBInitialPort设置主机和端口。
任何帮助表示赞赏:)
我可以确认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的Properties,则它们无效。
阅读此Oracle博客 ,了解有关超时的更多信息。 这对我帮助很大。
com.sun.corba.ee.impl.orbutil.ORBConstants中有许多ORB配置参数(请注意,这是GlassFish ORB,而不是JDK ORB)。 与运输超时相关的常数是:
这可以控制ORB读取数据时的重试行为,并且不会立即获取所有数据。 它是TcpTimeouts的一个实例。 默认值为2000:6000:20。
这是与此讨论相关的内容。 它控制ORB在尝试连接到IOR(EJB引用的线程代表)时在客户端的行为方式。 这也是TcpTimeouts的一个实例。 默认值为250:60000:100:5000。
这可以控制客户端在成功发送请求后等待响应的时间。 默认值为30分钟。 两个TcpTimeout都使用相同的语法进行配置:
initial:max:backoff [:maxsingle] (由...分隔的一系列3或4个正十进制整数
哪里:
其工作原理如下:
第一个超时持续最初的毫秒。 每次后续超时都是通过乘以退避因子从前一次获得的(如上所述)没有超时可以超过maxsingle毫秒:一旦达到此值,任何后续超时都具有相同的值。 上次超时前花费的总时间小于最大值。 请注意,上次超时可能会导致总时间超过最大值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.