RMI何时进行TCP连接?

时间:2012-07-10 15:27:05

标签: java rmi

我有一个测试程序 T ,其中:

  • 从服务器 S
  • 上的RMI注册表获取Remote对象O的存根
  • 在数百个并行线程中,调用此对象上的方法 O

我可以看到服务器 S 有许多“RMI TCP连接”线程。我原以为只有一个,因为 T 上只有一个 O 存根。这是如何工作的?

2 个答案:

答案 0 :(得分:1)

每个线程的每个端点都需要连接RMI。它在客户端汇集它们,这反过来又导致服务器端的池化,所以它实际上并不那么糟糕,但是如果你有1000个线程在同一时刻执行RMI调用,肯定会有1000个连接。它们不是多路复用的。

答案 1 :(得分:-1)

如果可能,RMI应该尝试重用服务器套接字和客户端套接字。

当服务器套接字工厂不相等时(例如,执行equals,结果为false并再次建立连接),就会发生这种情况。也许存根没有实现hashCode和equals,所以没有办法知道套接字是否可以使用。