首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java -Djava.rmi.server.hostname=localhost仍然打开一个监听0.0.0.0的套接字

java -Djava.rmi.server.hostname=localhost仍然打开一个监听0.0.0.0的套接字
EN

Stack Overflow用户
提问于 2012-04-16 12:11:34
回答 3查看 48.3K关注 0票数 12

我使用-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控件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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。

票数 22
EN

Stack Overflow用户

发布于 2020-08-20 10:47:44

因为Java8u102 -Dcom.sun.management.jmxremote.host绑定到特定的ip地址。

票数 2
EN

Stack Overflow用户

发布于 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,它只是协议设计中很久以前的一个令人讨厌的遗留物。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10173834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档