我正在使用Java RMI构建分布式系统,它必须支持服务器丢失.
如果我的客户端使用RMI连接到服务器,如果此服务器出现故障(例如电缆问题),我的客户端应该获得异常,以便它可以连接到其他服务器.
但是当服务器出现故障时,我的客户端没有任何反应,他一直在等待回复.如何为此设置超时?
ZZ *_*der 15
对于套接字读取超时,您可以像这样设置自己的工厂,
RMISocketFactory.setSocketFactory( new RMISocketFactory()
{
public Socket createSocket( String host, int port )
throws IOException
{
Socket socket = new Socket();
socket.setSoTimeout( timeoutMillis );
socket.setSoLinger( false, 0 );
socket.connect( new InetSocketAddress( host, port ), timeoutMillis );
return socket;
}
public ServerSocket createServerSocket( int port )
throws IOException
{
return new ServerSocket( port );
}
} );
Run Code Online (Sandbox Code Playgroud)
Nok*_*oky 12
我最近也遇到了这个问题,发现我需要设置以下Java属性,以便在客户端进行RMI调用超时:
sun.rmi.transport.tcp.responseTimeout
Run Code Online (Sandbox Code Playgroud)
以下是Java新版本中这些参数的完整独家新闻:
您可以设置系统属性.
就像是sun.rmi.transport.connectionTimeout
它们在此处详述:http:
//java.sun.com/j2se/1.4.2/docs/guide/rmi/sunrmiproperties.html
归档时间: |
|
查看次数: |
25545 次 |
最近记录: |