71 votes

Expliquer l'URL JMX

J'essaie de comprendre une URL de service JMX.

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

Ce serait génial si quelqu'un pouvait m'aider à comprendre cela.

Merci

100voto

David Tonhofer Points 1816

Je vais réutiliser une réponse que j'ai écrit précédemment pour cette question: Impossible de se connecter à Tomcat MBeanServer via jconsole dans Java6

Il n'est pas complet, mais qui pourraient vous aider:

Supposons que vous avez le Serveur JMX (alias "Agent JMX" alias "de la JVM vous souhaitez vous connecter') en cours d'exécution sur la CIBLE 'MACHINE' avec le RMI registry port au RMI REGISTRY PORT "et le JMX RMI port du serveur à "JMX RMI PORT du SERVEUR'.

Note:

  1. Le RMI registry dit JMX clients où trouver les JMX RMI port du serveur; des renseignements peuvent être obtenus sous la touche jmxrmi.
  2. Le RMI registry port est généralement connu comme il est défini dans les propriétés du système à la JVM de démarrage.
  3. Le JMX RMI le port du serveur est généralement pas connue comme la JVM choisit au hasard (si pas d'autres précautions sont prises).

L'URI suivante mènera à la réussite de la connexion (testé)

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

Cela ressemble méchant. Nous allons couper à part.

Cette URI est un RFC2609 "Service location Protocol URL" (bon, c'est vraiment une URI, non?)

Il est composé de:

  • service - une constante
  • jmx:rmi - le type de service composé de: type abstrait jmx et schéma d'URL rmi
  • le reste - le sap (service access protocol specification)

sap est décomposé en:

  • //<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> - ipsite
  • /jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi - URL de la partie

Une bien informé JMX client se connecte à la "ipsite" faire JMX-sur-RMI les échanges; mais ce que le client JMX qui ne SAIT pas que le port? De la Patience...

URL de la partie est décomposée en:

  • /jndi/ - Ce qui semble dire au client JMX qu'il peut obtenir des renseignements de recherche à l'emplacement qui suit
  • rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi - Oui, nous avons d'obtenir des informations sur la JMX RMI Serveur au RMI de registre sous la clé de recherche jmxrmi

C'est un peu chariot avant le cheval, que l'on a à communiquer avec le RMI registry donné par la dernière partie de la SLP URL d'abord.

Après grattage de la tête, de manière intuitive, nous allons essayer:

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

Oui, ça marche! JMX RMI le port du serveur est bien obtenue à partir de la base de registre. Sur la deuxième pensée, de la machine cible doit également être obtenu à partir de la base de registre, donc:

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

Encore mieux, qui fonctionne aussi!

Références:

  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

4voto

stacker Points 34209

Selon javax.management.remote.rmi

cette URL est assemblée comme ça

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X