我使用-Djava.rmi.server.hostname=localhost选项使rmi只监听localhost,但netstat显示套接字正在侦听0.0.0.0。
奇怪的是,RMI RenewClean线程显示了它使用的本地主机。例如RMI更新清洁本地主机:59357
我假设如果我设置-Djava.rmi.server.hostname=localhost,它应该只监听127.0.0.1
我是否误解了什么是java.rmi.server.hostname控件?
发布于 2012-04-16 12:31:30
,我假设如果设置了-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生命周期中仅读取一次
为了扩展这一点,它还可以用于控制由NAT设备后面的主机导出的RMI服务器的有效IP地址(如客户端所见)。它不一定与本地主机有任何关系,例如在NAT情况下,它可以是主机名、虚线四位IPv4地址或IPv6地址。
1 Pitt & McNiff,java.rmi,“远程方法调用指南”,Addison,2001,p.258。
发布于 2020-08-20 10:47:44
因为Java8u102 -Dcom.sun.management.jmxremote.host绑定到特定的ip地址。
发布于 2020-07-18 18:18:34
遇到这个问题后,我想提供一个不同的上下文,向熟悉HTTP工作方式的人解释这个值是什么。当您最初连接到com.sun.management.jmxremote.port指定的端口时,响应与HTTP重定向到由:com.sun.management.jmxremote.port形成的名称相同这意味着主机名必须是( a)可由JMX客户端解析,b)允许通过路由和防火墙连接到。但是,端口可以与提供重定向的初始端口重叠。
现在,问题是:你能阻止重定向吗?据我所知,没有。我尝试将主机名设置为各种值,如0.0.0.0、255.255.255.255、'‘(空)。我也将端口设置为"0“,以查看这是否会影响行为。不是的。尽管您可以连接到协议的查找和RMI部分的相同端口,但它不允许您只建立到同一个解析IP的连接。
我假设此行为允许进程充当多个进程或集群中多个节点的RMI端口的中心索引,但是对于NAT,它只是协议设计中很久以前的一个令人讨厌的遗留物。
https://stackoverflow.com/questions/10173834
复制相似问题