1

リモートサーバーで開始したRMIレジストリに接続しようとしていますが、しばらくすると次の例外が発生します。

java.rmi.ConnectException: Connection refused to host: *.*.*.*; nested exception is:     
java.net.ConnectException: Connection timed out

サーバー上でクライアントをローカルで実行することにより、すべてが機能しますが、リモートで接続することはできません。telnetからでもありません。しかし、私が実行した場合

start rmiregistry 1337

telnetからリモートで接続できます。サーバーコードを実行しているときに設定する必要があると思いますが、それが何であるかを見つけるのに苦労しています。

これはサーバーコードの一部です。

String codeBasePath = "file:/C:/*path*/build/classes";

System.setProperty("java.rmi.server.codebase", codeBasePath);
System.setProperty("java.rmi.server.hostname", *host IP*);

RemoteFileServer server = new FileServer();

Registry registry = LocateRegistry.createRegistry(PORT);

registry.bind(*name*, server);

System.out.println("Server ready");

私がそれを理解するのを助けるためにもっと情報/コードが必要な場合は私に知らせてください。

4

1 に答える 1

0

わかりました、私が考えることができる2つのオプションがあります

1 - セキュリティ ポリシーを使用して着信接続を許可しましたか。このステップは非常に簡単です。実際にはここを参照してください: rmi run tutorial

2 - OS から外部に対してポートが閉じられている可能性があります。たとえば、Linux を使用している場合、次のように iptables からポートを開く必要があります。 state NEW -m tcp -p tcp --dport 1099 -j ACCEPT または Windows を使用している場合は、ファイアウォールから設定できます。

不明な点があれば質問できます。

于 2013-01-30T08:34:27.897 に答える