4

我有一个测试程序T

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

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

4

2 回答 2

1

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

于 2012-07-11T00:45:05.663 回答
-1

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

您的情况发生在服务器套接字工厂不相等时(执行 equals 时,结果为 false 并再次建立连接)。也许存根没有实现 hashCode 和 equals,所以没有确定的方法可以知道套接字是否可用。

于 2012-07-10T17:38:34.307 回答