Теперь мне нужно подключить это приложение с моего локального компьютера, но я не знаю номер порта JMX удаленного компьютера. Где я могу найти его? Или я должен перезапустить это приложение с некоторыми параметрами виртуальной машины, чтобы указать номер порта?
По умолчанию JMX не публикует порт, если вы не укажете аргументы с этой страницы: Как активировать JMX ...
-Dcom.sun.management.jmxremote # no longer required for JDK6
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false # careful with security implications
-Dcom.sun.management.jmxremote.authenticate=false # careful with security implications
Если вы работаете, у вас должна быть возможность получить доступ к любому из этих системных свойств, чтобы узнать, установлены ли они:
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.
person
Gray
schedule
28.04.2012