Я пытаюсь понять URL-адрес службы JMX.
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Было бы здорово, если кто-то может помочь мне понять это.
Спасибо
Я пытаюсь понять URL-адрес службы JMX.
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Было бы здорово, если кто-то может помочь мне понять это.
Спасибо
Я повторно использую ответ, который я написал ранее для этого вопроса: Не удается подключиться к MBeanServer от Tomcat через jconsole в Java6
Он не завершен, но может помочь:
Предположим, что у вас есть JMX-сервер (псевдоним "JMX Agent" псевдоним "JVM, который вы хотите подключиться к" ), запущенный на "TARGET MACHINE" с портом реестра RMI в "RMI REGISTRY PORT" и портом сервера JMX RMI на "JMX RMI SERVER PORT".
Примечание:
jmxrmi
.Следующий URI приведет к успешному соединению (проверено)
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
Это выглядит противно. Разрежьте его.
Этот URI является URL-адресом RFC2609 "URL-адрес протокола службы" (ну, это действительно URI, не так ли?)
Он состоит из:
service
- константаjmx:rmi
- тип службы, состоящий из: абстрактного типа jmx
и схемы URL rmi
sap разлагается на:
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
- ipsite/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- часть URLХорошо информированный клиент JMX подключается к "ipsite" для обмена JMX-over-RMI; но что из JMX-клиента, который не знает этот порт? Patience...
URL-часть разбита на:
/jndi/
- Кажется, это говорит клиенту JMX, что он может получить информацию о поиске в месте, которое следует заrmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- Да, мы получаем информацию о сервере JMX RMI в реестре RMI под ключом поиска jmxrmi
Это несколько повозка перед лошадью, так как нужно сначала связаться с реестром RMI, указанным частью последней URL-адреса SLP.
После царапания головы, интуитивно, попробуйте:
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
Да, это работает! Порт сервера JMX RMI хорошо получен из реестра. Во-вторых, целевая машина также должна быть получена из реестра, таким образом:
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
Даже лучше, это тоже работает!
Литература:
Объяснить:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234
- говорит, что на машине с IP-адресом 192.168.30.10 имеется агент JMX. Агент JMX использует (TCP) порт 1234 для предоставления услуг JMX через RMI (в основном работает как RMI-сервер)./jndi/rmi://192.168.30.10:2344/jmxrmi
- говорит, что заглушка RMI для взаимодействия с агентом JMX через RMI может быть найдена в реестре RMI, который работает на компьютере с IP-адресом 192.168.30.10 и использует (TCP) порт 2344. Чтобы получить RMI-заглушка вам нужно найти привязку "jmxrmi".Предыдущие ответы предполагают, что вторая часть URL-адреса должна получить серверный порт сервера JMX RMI. Это неверно. Порт сервера JMX RMI является (TCP) 1234 и является частью URL-адреса. То, что вы получаете из реестра RMI, это RMI-заглушка (javax.management.remote.rmi.RMIServerImpl_Stub
), которую вы можете использовать для связи с JMX-агентом (MBean Server) над RMI.
Надеюсь, что это поможет.
Согласно javax.management.remote.rmi
этот url собран таким образом
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname