私は非常に単純なrmiクライアント/サーバーアプリケーションを持っています。私は、サーバーを作成するためにこれを使用、しかし「のrmiregistry」アプリケーションを使用していない:サーバーへのJava RMI接続
server = new RemoteServer();
registry = LocateRegistry.createRegistry(PORT);
registry.bind("RemoteServer", server);
クライアント部分がある:ここでは
registry = LocateRegistry.getRegistry(IPADDRESS, PORT);
remote = (IRemoteServer) registry.lookup("RemoteServer");
は魅力的な問題です:アプリケーションは、時に完璧に動作しますサーバーとクライアントの両方が私の(私有の)ローカルネットワークで動作しています。できるだけ早く私は、公開サーバー上のサーバーを置くように、アプリケーションが分間ハング、そして私に次のエラーを与える:私は思う
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.ConnectException: Connection refused to host: 192.168.x.y; nested exception is:
java.net.ConnectException: Connection timed out: connect
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source ... (the rest is truncated)
キーは(私のプライベートネットワーク上で実行されている)クライアントが接続できないということです自分自身(私のアドレスは192.168.xyです。ここでxyは他の数字ですが実際のエラーメッセージに私のIPアドレスが表示されています)
公共のインターネットでrmiサーバーを殺すと、 "host:abcdへの接続が拒否されました")というメッセージが表示されるので、サーバー側のものが少なくとも動作していることがわかります。
提案がありますか?
EDIT:もう少し明確にする:192.168.x.yはクライアントアドレス、a.b.c.dはサーバーアドレスです。 stacktraceは、クライアントがクライアントに接続できないことを示しています。
あなたはRMIクライアントコールバックを使用していますか? –