254 votes

Comment activer JMX sur ma machine virtuelle Java pour l’accès avec jconsole ?

Comment activer JMX sur une JVM pour l’accès avec jconsole ?

329voto

Mauli Points 4397

La documentation peut être trouvée ici:

http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html

Commencez votre programme avec les paramètres suivants:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

Par exemple comme ceci:

java -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9010 \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -jar Notepad.jar

-Dcom.soleil.de la gestion.jmxremote.locaux.seulement=false n'est pas forcément nécessaire mais sans cela, il ne fonctionne pas sur Ubuntu. L'erreur serait quelque chose comme ce:

01 Oct 2008 2:16:22 PM sun.rmi.transport. customer .TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=37278] throws
java.io.IOException: The server sockets created using the LocalRMIServerSocketFactory only accept connections from clients running on the host where the RMI remote objects have been exported.
    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:89)
    at sun.rmi.transport. customer .TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
    at sun.rmi.transport. customer .TCPTransport$AcceptLoop.run(TCPTransport.java:359)
    at java.lang.Thread.run(Thread.java:636)

voir http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6754672

Attention également avec les Dcom.soleil.de la gestion.jmxremote.authentifier=falsequi rend l'accès à la disposition de tous, mais si vous utilisez uniquement pour le suivi de la JVM sur votre machine locale, il n'a pas d'importance.

Mise à jour:

Dans certains cas, je n'ai pas été en mesure de joindre le serveur. Ce fut alors fixé si j'ai mis ce paramètre: java.rmi.server.hostname=127.0.0.1

10voto

Remarque, Java 6 dans la dernière incarnation permet jconsole pour s’attacher à un processus en cours, même après que qu’elle ait été commencé sans incantations JMX.

Si c’est à votre disposition, également envisager de jvisualvm car elle fournit une mine d’informations sur l’exécution du processus, y compris un profileur.

7voto

user3013578 Points 11

Je me sers a ND 7.0

Mon JVM besoin tous les arguments suivants à surveiller dans la JConsole

Je l’ai trouvé avec http://www.ecovations.de/blog/?p=99

6voto

alex.pulver Points 306

Sur Linux, j’ai utilisé les paramètres suivants :

et aussi, j’ai édité/etc/hosts pour que le nom d’hôte correspond à la address(192.168.0.x) de l’hôte plutôt que le address(127.0.0.1) de bouclage

2voto

Wasif Points 36

Exécutez votre application java avec la suite de paramètres de ligne de commande:

-Dcom.sun.management.jmxremote.port=8855
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

Il est important d'utiliser l' -Dcom.soleil.de la gestion.jmxremote.ssl=false paramètre si vous ne voulez pas installer des certificats numériques sur jmx hôte.

Si vous avez lancé votre application sur une machine ayant l'adresse IP 192.168.0.1, ouvrez jconsole, mettre 192.168.0.1:8855 dans le Processus Distant champ, puis cliquez sur se Connecter.

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