3 ответов:
Я буду повторно использовать ответ, который я написал ранее для этого вопроса:не удается подключиться к MBeanServer Tomcat через jconsole в Java6
это не полный, но может помочь:
предположим, что у вас есть сервер JMX (псевдоним "JMX Agent" псевдоним "JVM, к которому вы хотите подключиться"), работающий на "целевой машине" с порт реестра RMI в 'RMI REGISTRY PORT' и порт сервера JMX RMI at ' JMX RMI SERVER Портвейн'.
Примечание:
- The реестр RMI сообщает клиентам JMX, где найти порт сервера JMX RMI; информацию можно получить под ключом
jmxrmi.- The порт реестра RMI обычно известен как он устанавливается через Свойства системы при запуске JVM.
- 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еще лучше, что работает, тоже!
ссылки:
- http://download.oracle.com/javase/6/docs/api/javax/management/remote/rmi/package-summary.html
- http://download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html
- http://mx4j.sourceforge.net/docs/ch03s04.html
- http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg
- http://www.rfc-editor.org/rfc/rfc2609.txt
объяснить:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234- говорит, что на машине есть агент JMX с IP-адресом 192.168.30.10. Агент 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) через RMI.надеюсь, что это помогает.
по данным javax.управление.дистанционный.rmi
этот url собран вот так
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
Comments