首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法让Java JMX服务器仅绑定到127.0.0.1!

我无法让Java JMX服务器仅绑定到127.0.0.1!
EN

Stack Overflow用户
提问于 2010-02-22 09:45:25
回答 1查看 2.2K关注 0票数 0

我有一台java服务器。我希望能够通过JMX客户端连接到它。我这样做:

代码语言:javascript
复制
JMXServiceURL jmxUrl = new JMXServiceURL(null,null,JMX_PORT);
JMXConnectorServer jmxRemoteServer;
jmxRemoteServer=JMXConnectorServerFactory.newJMXConnectorServer(jmxUrl, jmxEnvironment, server);
jmxRemoteServer.start();

这是可行的。我可以在我的机器上启动JConsole并连接到JMX_PORT,然后就会出现漂亮的图形。

这是一个问题。这会导致JMX服务器绑定到所有接口上的JMX_PORT。我只想让它绑定到127.0.0.1。否则,这对我来说是一个安全问题。

根据文档,JMXServiceURL jmxUrl = new JMXServiceURL(null,null,config.getJmxRemotePort());应该使用默认协议(jmxmp)和本地主机创建JMXServiceURL。我曾尝试将其显式地指定为"127.0.0.1“作为绑定的地址,但也不起作用。

Java的JMX服务器绑定到所有IP地址,并且只拒绝绑定到127.0.0.1。

EN

回答 1

Stack Overflow用户

发布于 2010-02-22 09:55:07

运行以下代码:

代码语言:javascript
复制
public static void main(String args[]) {
  try {
    InetAddress local = InetAddress.getLocalHost();
    System.out.println("Host address: " + local.getHostAddress());
    System.out.println("Host name: " + local.getHostName());
    System.out.println("Canonical host name: " + local.getCanonicalHostName());
    System.out.println("Address: " + local.getAddress());
  } catch (UnknownHostException e) {
    e.printStackTrace();
  }
}

如果将null作为主机参数传递,该类将使用InetAddress.getLocalHost().getHostName()。至少对我来说,它不会返回"127.0.0.1",它使用的是我的机器的名称,根据描述,这似乎是错误的(这不是我的回送地址)。该地址可供其他机器使用。当你尝试的时候会发生什么:

代码语言:javascript
复制
JMXServiceURL jmxUrl = new JMXServiceURL("http","127.0.0.1",JMX_PORT);

或者:

代码语言:javascript
复制
JMXServiceURL jmxUrl = new JMXServiceURL(null,"127.0.0.1",JMX_PORT);

如果未提供,协议默认为"jmxmp“。

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

https://stackoverflow.com/questions/2308344

复制
相关文章

相似问题

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