私は別のネットワーク上でホストされているサーバーからリモートオブジェクトを取得しようとしています。私は同じマシンと同じネットワーク上に接続することができますが、別のネットワークから取得しようとすると次のようになります。インターネット経由のJava RMI接続
接続がホストから192.168.1.131;ネストされた例外:java.net.ConnectException:接続タイムアウト:接続
間違ったネットワークで検索機能が検索されているようです。 System.setPropertyを使用しようとしましたが、動作しません。ここでは、コード:
サーバー
public class Main {
public static void main(String[] args) {
try{
System.out.println("Init server...\n");
TestInterface test = new TestImplement();
System.setProperty("java.rmi.server.hostname", "95.247.x.x");
System.out.println("Reg RMI...\n");
Registry rmiRegistry = LocateRegistry.createRegistry(5555);
rmiRegistry.rebind("Test" , test);
System.out.println("Reg completed!\n");
}catch(Exception e){
e.printStackTrace();
}
}
}
クライアント
...
registryRMI = LocateRegistry.getRegistry("95.247.x.x",5555);
TestInterface testClient = (TestInterface)registryRMI.lookup("Test");
...
は私もクライアントjarにjava.rmi.server.hostname
を設定する必要がありますか?
5555ポートでtelnetできるかどうか確認してください。 – mkalsi
同様に、クライアントが '192.168.1.131'に接続しようとしているのはなぜでしょうか。レジストリがそのアドレスにインスタンスをバインドしているかもしれません...あまりにもurestartしましたか? – gusto2
@ gusto2 'Registryはインスタンスをそのアドレスにバインドします'は全く意味がありません。 *アプリケーション*は、*レジストリ*を介して*名前*を*インスタンス*にバインドします。 'Registry.bind()'操作にはアドレスの概念はありません。 – EJP