Java 什么时候创建RMI连接?

Java 什么时候创建RMI连接?,java,rmi,Java,Rmi,我试图了解如何以及何时在一个非常简单的应用程序中创建RMI连接 server = new RemoteServer(); registry = LocateRegistry.createRegistry(PORT); registry.bind("Remote", server); 客户部分是: registry = LocateRegistry.getRegistry(HOST, PORT); remote = (IRemoteServer) registry.lookup("Remote"

我试图了解如何以及何时在一个非常简单的应用程序中创建RMI连接

server = new RemoteServer();
registry = LocateRegistry.createRegistry(PORT);
registry.bind("Remote", server);
客户部分是:

registry = LocateRegistry.getRegistry(HOST, PORT);
remote = (IRemoteServer) registry.lookup("Remote");
假设remote已经定义了一些方法
doSomething()
。现在,假设一切都已正确设置并正常工作,我正试图了解TCP连接的确切时间

  • 是否在调用
    lookup()
    时建立了连接,并且在调用
    remote.doSomething()
    时重复使用了相同的连接?如果我再次调用
    lookup()
    ,是否会创建第二个连接
  • 还是每次调用
    remote.doSomething()
    时都会创建一个新的连接,然后断开
(有点相关,但它指的是多个线程对单个远程对象调用一个调用。)

创建RMI连接时

没有单一的“RMI连接”,因此问题已经形成

是在调用lookup()时建立的连接

是的,可能,见下文

无论何时调用remote.doSomething(),都会重复使用相同的连接

如果远程对象与注册表位于同一主机上,请参阅下面的内容;否则肯定会有一个新的TCP连接

如果我第二次调用lookup(),会创建第二个连接吗

可能,见下文

还是每次调用remote.doSomething()时都会创建一个新的连接,然后再断开

可能不会

这些都没有指定,但是Sun/Oracle实现在各种控制下执行客户端连接池,特别是
Sun.rmi.transport.tcp.threadKeepAliveTime。
默认情况下,空闲超过60秒的连接将关闭。过去是15秒