我有一个测试程序 T ,其中:
Remote
对象O的存根
我可以看到服务器 S 有许多“RMI TCP连接”线程。我原以为只有一个,因为 T 上只有一个 O 存根。这是如何工作的?
答案 0 :(得分:1)
每个线程的每个端点都需要连接RMI。它在客户端汇集它们,这反过来又导致服务器端的池化,所以它实际上并不那么糟糕,但是如果你有1000个线程在同一时刻执行RMI调用,肯定会有1000个连接。它们不是多路复用的。
答案 1 :(得分:-1)
如果可能,RMI应该尝试重用服务器套接字和客户端套接字。
当服务器套接字工厂不相等时(例如,执行equals,结果为false并再次建立连接),就会发生这种情况。也许存根没有实现hashCode和equals,所以没有办法知道套接字是否可以使用。