2017-11-19 14 views
1

同じマシンで正常に動作する非常に単純なRMIサーバー/クライアントがあります。私は今、あるマシン上でサーバを実行しようとしており、別のマシン上のクライアントは両方とも同じネットワークにあります。私が使用してIPアドレスをネットワークにプロパティを設定している:両方のマシンでRMIリモート接続に失敗しました

System.getProperty("java.rmi.server.hostname", "192.168.x.x"); 

&無効にファイアウォールが、接続がまだ失敗します。

クライアントコードは(サーバは8888でcreateRegistryを使用しています)サーバーに接続するためにこれを使用しています。

Registry registry = LocateRegistry.getRegistry("192.168.x.x",8888); 
    ITest stub = (ITest) registry.lookup("ITest"); 

捕まるexecptionは、例えば192.168.xxの対与えられたものと同じではないIPを示しているようだが169.254.xxの:

Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ... 
+0

複数の物理または仮想ネットワークインターフェイスがインストールされていますか? – Marged

+0

@Margedネットワークアダプターを意味しますか?ええ、4つのうち2つは仮想です –

+1

'System.getProperty'はプロパティを設定せず、戻り値を破棄しても何も役に立たない。サーバーを起動した後、プラットフォームによってnetstat -pまたはlsofなどを使用して、リッスンしているアドレスとポートを正確に確認します。 –

答えて

1

dave_thompson_085さんが私に電話したのはSystem.getPropertyなので、私は完全に見逃していました。 System.setPropertyを呼び出すとこの問題が解決され、現在は機能します。

0

この例外の理由のカップルがあるかもしれません:

あなたがバックグラウンドであなたのrmiregistryを開始していません。
間違ったポート番号に接続しようとしています。
ファイアウォールが接続をブロックしている可能性があります。

ルーターファイアウォールの制限がある場合は、必ずチェックして無効にしてください。

+0

私が知る限り、LocateRegistery.createRegistryは私のためにサービスを開始します。サーバーとクライアントの両方でポート番号が正しい(8888)。また、両方のマシンでファイアウォールを無効にしました。 –

+0

レジストリを起動していないか、間違ったポート番号を使用しても、このエラーは発生しません。 – EJP

関連する問題