1

Java Remote Method Invocation (RMI) を使用して Web アプリケーションをテストしています。ドングル、ブロードバンドを介してインターネットに接続している場合。RMI が要求に応答するのに非常に長い時間がかかります。メソッド呼び出しの完了には約 10 秒かかります。メソッド呼び出しを行うとすぐに、インターネット接続でデータ転送速度が上昇することもわかります。したがって、間違いなく、外部ネットワークを介して 2 つの内部プロセス間で RMI 接続を確立しているようです。

インターネットから切断されている間、応答は数ミリ秒のように速く変化します。私の /etc/hosts ファイルには、127.0.0.1 localhost のエントリがあります。私は常に、naming.lookup のメソッド呼び出し URL で 127.0.0.1 を使用します。しかし、インターネットに接続しているときにマシンを RMI 呼び出しにすばやく応答させる方法がわかりません。助言がありますか?

4

1 に答える 1

6

問題は、RMI レジストリへの検索呼び出しに使用するアドレスではなく、検索呼び出しの結果である URL 内のアドレスです。これは、システムの最初のインターフェイスの IP アドレスにデフォルト設定されているため、インターネットに接続しているときは外部接続であると推測されます。

私が考えているのは、127.0.0.1 で RMI レジストリを呼び出すと、インターネット アドレスに必要なサービスの場所が返され、RMI 呼び出しがドングル インターフェイス経由でルーティングされるということです。

プロパティを設定してjava.rmi.server.hostname、RMI URL で返すホスト名または IP アドレスを RMI レジストリに伝える必要があります。

したがって、次のようなものが必要になります。

String ipAddress = "10.1.2.3"; //Local IP address 
System.setProperty("java.rmi.server.hostname",ipAddress);

また

String hostname = "myserver"; //hostname that resolves for a local address
System.setProperty("java.rmi.server.hostname",hostname);
于 2012-07-05T11:48:39.067 に答える