Mongoose House

Technical Edition

统计

留言簿(4)

积分与排名

阅读排行榜

解决RMI调用timeout的问题

最近遇到一个问题, 某系统, 有外部系统通过RMI调用来访问此系统. 现在有一个问题是, 如果当此系统某调用花费时间过长, 那么就需要使此次调用timeout. 而默认地, timeout的时间是2小时, 现在需要找到一种办法缩短这个时间.

解决办法
查阅资料发现, 可以设置sun.rmi.transport.tcp.responseTimeout(Java1.4 and above)来达到这个效果. 在Sun RMI上测试通过.

测试方法, 首先, 让某remote method执行2分钟左右, 模拟一个long time method.
 1 public void aMethod() throws RemoteException {
 2     
 3     //long time op.
 4     try {
 5         Thread.sleep(100000L);
 6     }catch (Exception e) {
 7         e.printStackTrace();
 8     }
 9     
10     System.out.println("It's a long time method.");
11     
12 }

在客户端执行调用的时候使用如下代码, 则可以避免2分钟的调用等待, 使其尽快timeout, 释放资源.
1 java -Dsun.rmi.transport.tcp.responseTimeout=50 mongoose.TestClient


相关资料
Re: Is there timeout parameter
Re: socket timeouts taking 2 hours
FAQ of RMI
Does RMI have a timeout period...
Connection reset
sun.rmi Properties


posted on 2006-08-14 13:20 Mongoose 阅读(2514) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: