Ответ 1
Теперь мне нужно подключить это приложение с моего локального компьютера, но я не знаю номер порта JMX удаленного компьютера. Где я могу найти его? Или я должен перезапустить приложение с некоторыми параметрами виртуальной машины, чтобы указать номер порта?
По умолчанию JMX не публикуется на порте, если вы не укажете аргументы с этой страницы: Как активировать JMX...
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
Если вы работаете, вы должны иметь доступ к любому из этих системных свойств, чтобы увидеть, были ли они установлены:
if (System.getProperty("com.sun.management.jmxremote") == null) {
System.out.println("JMX remote is disabled");
} else [
String portString = System.getProperty("com.sun.management.jmxremote.port");
if (portString != null) {
System.out.println("JMX running on port "
+ Integer.parseInt(portString));
}
}
В зависимости от того, как подключен сервер, вам также может потребоваться указать следующий параметр. Как часть начального соединения JMX, jconsole подключается к порту RMI, чтобы определить, на каком порту работает сервер JMX. Когда вы изначально запускаете приложение с поддержкой JMX, оно просматривает собственное имя хоста, чтобы определить, какой адрес вернуть в этой начальной транзакции RMI. Если ваше имя хоста не находится в /etc/hosts
или если оно имеет неверный адрес интерфейса, вы можете переопределить его следующим образом:
-Djava.rmi.server.hostname=<IP address>
Кроме того, мой пакет SimpleJMX позволяет вам определить и сервер JMX, и порт RMI, или настроить их оба на один и тот же порт. Вышеуказанный порт, определенный с помощью com.sun.management.jmxremote.port
, фактически является портом RMI. Это сообщает клиенту, на каком порту работает сервер JMX.