Java RMI TCPEndpoint新的套接字超时

时间:2015-02-09 18:57:45

标签: java tcp rmi

我有一个简单的客户端和服务器通过RMI进行通信的应用程序。

当我杀死服务器时,我正在四处看看客户端的行为。

客户端无法创建新套接字。你可以看到下面的例外:

Caused by: java.rmi.ConnectException: Connection refused to host:     172.17.2.100; nested exception is: 
java.net.ConnectException: Connection timed out
                  at     sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
                  at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
                  at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
                  at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
                  at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
                  ... 18 more.

Caused by: java.net.ConnectException: Connection timed out
                  at java.net.PlainSocketImpl.socketConnect(Native Method)
                  at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
                  at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
                  at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
                  at   java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
                  ... 30 more.

起初我认为这与创建注册表时传递的RMIClientSocketFactory创建的套接字有关,但正如您可以从异常中看到的那样,当TCPEndpoint尝试创建新套接字时。

由于TCPEndpoint显式创建了一个不使用超时的新套接字,我真的不知道如何克服这个问题。

有什么想法吗?

0 个答案:

没有答案