当某个对象被导出时,JavaRMI会创建一个ServerSocket吗?

时间:2018-05-20 22:29:41

标签: java rmi serversocket

我是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提供的默认serversocket和socket工厂。

1 个答案:

答案 0 :(得分:0)

  

每当我创建并绑定(Fragmentsregistry.rebind(...)的一个对象时,我正在创建一个新的SomeStub来监听此对象的调用?

没有。每次导出新的远程对象时,RMI都会尝试进行端口共享,并且只有在它没有可以与新对象共享的情况下才会创建新的ServerSocket

绑定与它无关。

NB 这不是存根。它是一个远程对象,它有自己的由RMI创建的存根。不要滥用标准命名。称之为别的。

  

所以如果问题1是真的

不是。

  

最好只使用此对象和线程的一个存根来避免创建大量的服务器套件

没有