如何解决java rmi -Djava.rmi.server.hostname = localhost仍然打开监听0.0.0.0的套接字
我假设如果设置-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页。
解决方法
我使用 -Djava.rmi.server.hostname = localhost
选项使rmi仅在localhost上侦听,但netstat显示套接字在 0.0.0.0 上侦听。
奇怪的是,RMI RenewClean线程使用本地主机显示它。例如RMI RenewClean- [localhost:59357]
我假设如果设置 -Djava.rmi.server.hostname = localhost, 则它应该仅在127.0.0.1上进行侦听
我是否误解了java.rmi.server.hostname的控件?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。