Объясните URL JMX



Я пытаюсь понять URL-адрес службы JMX.



service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi


было бы здорово, если кто-то может помочь мне понять это.



спасибо

470   3  

3 ответов:

Я буду повторно использовать ответ, который я написал ранее для этого вопроса:не удается подключиться к MBeanServer Tomcat через jconsole в Java6

это не полный, но может помочь:

предположим, что у вас есть сервер JMX (псевдоним "JMX Agent" псевдоним "JVM, к которому вы хотите подключиться"), работающий на "целевой машине" с порт реестра RMI в 'RMI REGISTRY PORT' и порт сервера JMX RMI at ' JMX RMI SERVER Портвейн'.

Примечание:

  1. The реестр RMI сообщает клиентам JMX, где найти порт сервера JMX RMI; информацию можно получить под ключом jmxrmi.
  2. The порт реестра RMI обычно известен как он устанавливается через Свойства системы при запуске JVM.
  3. The порт сервера JMX RMI обычно не известный как JVM выбирает его наугад (если нет других принимаются меры предосторожности).

следующий URI приведет к успешному соединению (проверено)

service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi

это выглядит отвратительно. Давайте разрежем его на части.

этот URI является RFC2609 "URL-адрес протокола определения местоположения службы" (Ну, это действительно URI, верно?)

состоит из:

  • service - постоянная
  • jmx:rmi - the тип сервиса состоит из: аннотация типаjmx и схема URLrmi
  • остальное -sap (спецификация протокола доступа к сервису)

sap раскладывается на:

  • //<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> - ipsite
  • /jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi - URL-адрес части

хорошо информированный клиент JMX подключается к" ipsite " для обмена JMX-over-RMI; но как насчет клиента JMX, который не знает этот порт? Терпение...

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

еще лучше, что работает, тоже!

ссылки:

  1. http://download.oracle.com/javase/6/docs/api/javax/management/remote/rmi/package-summary.html
  2. http://download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html
  3. http://mx4j.sourceforge.net/docs/ch03s04.html
  4. http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg
  5. http://www.rfc-editor.org/rfc/rfc2609.txt

объяснить:

service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
  1. service:jmx:rmi://192.168.30.10:1234 - говорит, что на машине есть агент JMX с IP-адресом 192.168.30.10. Агент JMX использует(TCP) порт 1234 для предоставления услуг JMX через RMI (в основном действует как сервер RMI).
  2. /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) через RMI.

надеюсь, что это помогает.

по данным javax.управление.дистанционный.rmi

этот url собран вот так

service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname

Comments

    Ничего не найдено.