-Djava.rmi.server.hostname = localhostオプションを使用してrmiをlocalhostでのみリッスンさせますが、netstatはソケットがリッスンしていることを示します0.0.0.0。
奇妙なことに、RMIRenewCleanスレッドはローカルホストを使用していることを示しています。例えば。 RMI RenewClean- [localhost:59357]
-Djava.rmi.server.hostname = localhostを設定した場合、127.0.0.1でのみリッスンする必要があると想定しました。
Java.rmi.server.hostnameが制御するものを誤解していますか?
-Djava.rmi.server.hostname = localhostを設定した場合、127.0.0.1でのみリッスンする必要があると想定しました。
番号。
Java.rmi.server.hostnameが制御するものを誤解していますか?
はい。 Java.rmi.server.hostname
は、リモートオブジェクトがリッスンするIPアドレスとは何の関係もありません。それはRMIServerSocketFactory.
によって決定されます
別の回答(後で削除)で私の本からの誤った引用を修正するには:
Java.rmi.server.hostname:
ホスト名文字列;デフォルト値は、「ドット付きクワッド」形式のローカルホストのIPアドレスです...これは、リモートオブジェクトがエクスポートされるときにこのJVMによって作成されるリモートスタブに埋め込まれます。これは、マルチホームホストによってエクスポートされたRMIサーバーの実効IPアドレスを制御するために使用できます。このプロパティは、JVMの存続期間中に1回だけ読み取られます。[1]
さらに拡張するために、NATデバイスの背後にあるホストによってエクスポートされたRMIサーバーの有効なIPアドレス(クライアントから見た場合)を制御するためにも使用できます。必ずしも何もありません。ローカルホストとの関係、たとえばNATの状況で、ホストホスト、ドット付きクワッドIPv4アドレス、またはIPv6アドレスのいずれかです。
[1] Pitt&McNiff、Java.rmi、The Remote Method Invocation Guide、 Addison Wesley 2001、p.258。