У меня есть сервер Java. Я хочу иметь возможность подключиться к нему с помощью клиента JMX.
Я делаю это:
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());
должен создать JMXServiceURL с протоколом по умолчанию (jmxmp) и localhost. Я попытался явно указать его как 127.0.0.1 в качестве адреса для привязки, и он тоже не работал.
Сервер Java JMX связывается со всеми IP-адресами и отказывается связываться только с 127.0.0.1.