RMI响应非常慢

时间:2012-07-05 11:11:29

标签: java macos rmi tomcat7

我正在使用Java远程方法调用(RMI)测试Web应用程序。当我通过加密狗连接到互联网,宽带; RMI需要很长时间才能响应请求。完成方法调用大约需要10秒钟。一旦我进行方法调用,我还可以看到互联网连接中的数据传输速率上升。所以肯定似乎是通过外部网络在两个内部进程之间建立RMI连接。

在与互联网断开连接时,它的响应变化很快,就像在几毫秒内一样。我的/ etc / hosts文件包含127.0.0.1 localhost的条目。我总是在方法调用url中使用127.0.0.1来进行naming.lookup。但是当我连接到互联网时,无法弄清楚如何让机器快速响应RMI呼叫。有什么建议?

1 个答案:

答案 0 :(得分:5)

您的问题不是您用于对RMI注册表进行查找调用的地址,而是URL中的地址,该地址是查询调用的结果。这默认为系统上第一个接口的IP地址,所以我的猜测是,当你连接到互联网时,它就是你的外部连接。

我认为发生的事情是您在127.0.0.1上调用RMI注册表,这会将您的Internet地址返回到您想要的服务位置,因此您的RMI调用将通过加密狗接口路由出来。 / p>

您需要设置the java.rmi.server.hostname property以告知RMI注册管理机构在其RMI网址中返回哪个主机名或IP地址。

所以你需要这样的东西:

String ipAddress = "10.1.2.3"; //Local IP address 
System.setProperty("java.rmi.server.hostname",ipAddress);

String hostname = "myserver"; //hostname that resolves for a local address
System.setProperty("java.rmi.server.hostname",hostname);