私はJava RMIを使用して分散システムを構築しています。Java RMI - クライアントタイムアウト
クライアントがRMIを使用してサーバーに接続されている場合、このサーバーがダウンすると(ケーブルの問題など)、クライアントは例外を取得して他のサーバーに接続できます。
しかし、サーバーがダウンすると、クライアントに何も起こりません。彼は応答を待っています。タイムアウトを設定するにはどうすればよいですか?
私はJava RMIを使用して分散システムを構築しています。Java RMI - クライアントタイムアウト
クライアントがRMIを使用してサーバーに接続されている場合、このサーバーがダウンすると(ケーブルの問題など)、クライアントは例外を取得して他のサーバーに接続できます。
しかし、サーバーがダウンすると、クライアントに何も起こりません。彼は応答を待っています。タイムアウトを設定するにはどうすればよいですか?
設定できるシステムプロパティがあります。 sun.rmi.transport.connectionTimeout
よう
何か彼らがここで詳述されている:私は最近、同様にこの問題が発生したソケットの読み込みタイムアウトのために
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/sunrmiproperties.html
を、あなたはこのような独自の工場を設定することができ、
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);
}
});
とRMI呼び出しがクライアント側でタイムアウトするために、次のJavaプロパティを設定する必要があることがわかりました。
ここは、Javaの新しいバージョンではこれらのparamsで完全スクープです:
これは私のためには機能しません。 – ZhekaKozlov
Thxを、それは多くのことをhelpaう! –
簡潔さと不正確さのためのApols;いいえインターネットとiPhoneが遅い... –
私はそれがsun.rmi.transport.connectionTimeoutかもしれないと思っていた。 defaulf値は15秒です。私のクライアントは分の応答を待っています。=/ –