2012-02-14 6 views
2

私はこのプロジェクトで、異なるマシン上の2つのモジュールがRMIを介して通信する必要があるところで作業しています。ホームネットワーク上のlocalhostへのJava RMI接続が正しいリモートモジュールを見つけることができません

ラップトップでクライアントとサーバーの両方のモジュールを起動します。 RMIは私が仕事中で仕事用ネットワークに接続しているときは正しく動作しているようですが、私が家にいてホームネットワークに接続すると動作しません。それはリモートオブジェクトが見つかりませんでした。私はgetRemoteAppメソッドから返されたオブジェクトの値をチェックしたときにここで

は、私はいくつかのデバッグと少し掘り、リモートオブジェクト

public static MyRMIApp getRemoteApp() throws RemoteException, NotBoundException, AccessException { 
    Registry registry = LocateRegistry.getRegistry("localhost", 28999); // tried 127.0.0.1 instead of localhost here, still not working 
    MyRMIApp app = (MyRMIApp) registry.lookup("COM"); 
    return app; 
} 

への参照を取得するために、クライアント側で使用する方法であり、それは私を示しエンドポイントは67.215.65.132です。 OpenDNSはインターネットに接続するために使用しています。それは127.0.0.1ではありませんか?

次に、私は自分のモバイルインターネットを使い、もう一度試しました。それは動作しているようですが、エンドポイントは127.0.0.1ではありません。それは私に割り当てられたアドレス192.168.x.xです。

だから誰でも私がここで何をしているのか教えていただけますか?私は本当に助けに感謝します。

OHおよびこのサーバ側のコードの一部

//Somwhere up top 
private final static MyRMIApp rmiApp = new RMIServer(); 

//Down below 
MyRMIApp stub = (MyRMIApp) UnicastRemoteObject.exportObject(rmiApp, 0); 
     Registry registry = LocateRegistry.createRegistry(28999); 
     registry.rebind("COM", stub); 
+0

わかりませんが、リモートオブジェクトがエクスポートされるポート番号を変更することをお勧めします.0はよく知られているポート番号で、他の一部のサービスは既にそれをリッスンしている可能性があります。 1023より上の値に変更してください。 – vjain27

+0

これはポート1112で試してみましたが、それでも同じです。 [:[エンドポイント:[67.215.65.132:1112](リモート)、OBJID:[2723e75d:1357d203dd7:MyRMIApp、RemoteObjectInvocationHandler [UnicastRef [liveRef -7fff、-8442143534524841902]]]]]値が プロキシで 当然例外は次のとおりです。 スレッド "main"の例外java.rmi.ConnectException:ホストへの接続が拒否されました:67.215.65.132;ネストされた例外は: – Bren

+0

あなたは私に完全なソースを送ってくださいできますか?私は自分自身をデバッグしたいと思います。また、私はあなたが持っているのと同じ問題を人々が議論しているように見えるこのリンクを見つけました:http://www.coderanch.com/t/487650/java/java/java-rmi-ConnectException-接続拒否。しかし私はどんな解決法も見なかった。あなたは一見を望むかもしれません。 – vjain27

答えて

2

RMI FAQの項目A.1を参照されます。具体的には、「適切な回避策は、サーバの起動時にシステムプロパティjava.rmi.server.hostnameを設定することです。」

関連する問題