导出某个对象时,JavaRMI 创建一个 ServerSocket?

JavaRMI creates a single ServerSocket when some object is Exported?

我是 Java 和 JavaRMI 的新手,所以对它的工作原理有一些疑问,见下文:

public interface Something implements Remote {...}

public SomeStub extends UnicastRemoteObject implements Something {...}

每次我创建和绑定 (registry.rebind(...)) SomeStub 的一个对象时,我都会创建一个新的 ServerSocket 来仅监听此对象的调用?

示例:

registry.rebind("...", new obj1);
registry.rebind("...", new obj2);
registry.rebind("...", new obj3).

2) 因此,如果问题 1 为真,是否最好仅使用此对象和线程的一个存根来避免创建大量服务器套接字?

PS:我正在使用 JavaRMI 提供的默认服务器套接字和套接字工厂。

Every time when I create and bind (registry.rebind(...)) one object of SomeStub I am creating a new ServerSocket to listen calls only for this object?

没有。每次您导出一个新的远程对象时,RMI 都会尝试进行端口共享,并创建一个新的 ServerSocket 只有在它还没有可以与新对象共享的时候。

绑定与此无关。

注意 这不是存根。它是一个远程对象,并且有自己的由 RMI 创建的存根。不要滥用标准命名。叫别的名字吧。

So if the question 1 is true

不是。

is better use just only one stub of this object and threads to avoid create lots of serversockets

没有