abd*_*nno 8 java timeout corba properties
我使用的是原生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设置主机和端口.
任何帮助表示赞赏:)
阅读此 Oracle 博客,了解有关超时的更多信息。这对我帮助很大。
com.sun.corba.ee.impl.orbutil.ORBConstants 中有许多 ORB 配置参数(请注意,这是 GlassFish ORB,而不是 JDK ORB)。与传输超时相关的常量是:
这控制了 ORB 正在读取数据并且不会一次获取所有数据时的重试行为。它是 TcpTimeouts 的一个实例。默认值为 2000:6000:20。
这是与本次讨论相关的内容。当尝试连接到 IOR(EJB 引用的连线代表)时,它控制 ORB 在客户端的行为方式。这也是 TcpTimeouts 的一个实例。默认值为 250:60000:100:5000。
这控制了客户端在成功发送请求后等待响应的时间。默认值为 30 分钟。两个 TcpTimeout 都使用相同的配置语法:
initial:max:backoff[:maxsingle](由 : 分隔的 3 或 4 个正十进制整数的系列)
在哪里:
其工作原理如下:
第一次超时持续初始毫秒。每个后续超时都是通过乘以退避因子(如上所述)从前一个超时获得的。没有超时可以超过 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 ..
Run Code Online (Sandbox Code Playgroud)
或者在你的代码中使用
System.setProperty("com.sun.corba.ee.transport.ORBWaitForResponseTimeout","5000");
Run Code Online (Sandbox Code Playgroud)
必须将 ORB 参数设置为系统属性。如果用作 InitialContext 的属性,则它们没有任何效果。
| 归档时间: |
|
| 查看次数: |
6707 次 |
| 最近记录: |