我假设如果设置-Djava.rmi.server.hostname = localhost,则它应该仅在127.0.0.1上进行侦听
没有。
我是否误解了java.rmi.server.hostname的控件?
是。
java.rmi.server.hostname与远程对象侦听的IP地址无关。那是由
RMIServerSocketFactory.
要更正我书中另一个引用中的错误引用(后来删除):
java.rmi.server.hostname:主机名字符串;默认值是本地主机的IP地址,其格式为“点分四进制”,当导出远程对象时,该IP地址将嵌入到此JVM创建的远程存根中。这可用于控制由多宿主主机导出的RMI服务器的有效IP地址。该属性在JVM的生命周期中仅读取一次。[1]
为了对此进行扩展,它还可以用于控制由NAT设备后面的主机导出的RMI服务器的有效IP地址(如客户端所示)。它不一定与本地主机有任何关系,例如在NAT情况下,它可以是主机名,点分四进制的IPv4地址或IPv6地址。
[1] Pitt&McNiff, java.rmi,《远程方法调用指南》, Addison Wesley 2001,第258页。



