Comment activer JMX sur une JVM pour l’accès avec jconsole ?
Réponses
Trop de publicités?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
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.
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
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.