服务器关闭或提供错误地址时RMI客户端超时

时间:2014-03-05 13:56:17

标签: sockets rmi ping

长话短说,我想在调用查找方法时向客户端指定超时。我这样做的原因是我的应用程序应该让用户可以自己指定地址和远程服务器的端口。因此,如果配置错误(例如地址如124.0.0.1),客户端将不得不等待应用程序响应的一分钟。 我尝试了以下属性,但徒劳无功:

  1. -Dsun.rmi.transport.tcp.handshakeTimeout = 10000
  2. -Dsun.rmi.transport.tcp.responseTimeout = 10000
  3. -Dsun.rmi.transport.proxy.connectTimeout = 10000
  4. 对我有用的唯一解决方案是实现RMIClientSocketFactory,在createSocket方法中创建一个套接字并指定此套接字的超时时间

    new RMIClientSocketFactory() {
    
                    @Override
                    public Socket createSocket(String host, int port)
                            throws IOException {
                        Socket socket = new Socket();
                        socket.connect(new InetSocketAddress(host, port), 10000);
                        return socket;
                    }
                };
    

    但我不想使用这种解决方案,因为它很丑陋且冒着风险。 有什么建议? 感谢

0 个答案:

没有答案