256 Stimmen

Wie aktiviere ich JMX auf meiner JVM für den Zugriff mit jconsole?

Wie aktiviert man JMX auf einer JVM für den Zugriff mit jconsole?

33 Stimmen

Es ist erlaubt, und eigentlich ist es nur eine Erinnerung für mich, weil ich immer vergesse, woher ich die Parameter kopiere, und jetzt weiß ich, wo ich sie finde :-)

21 Stimmen

Stack Exchange hat die Benutzer immer ausdrücklich dazu ermutigt, ihre eigenen Fragen zu beantworten, siehe hier: stackoverflow.com/help/self-answer

11 Stimmen

Mehr als einmal habe ich SO nach etwas gesucht und eine Antwort auf eine Frage gefunden... von mir selbst. Und eine dieser Fragen wurde auch von mir gestellt. Deshalb ist es gut, wenn man seine eigenen Antworten einstellt. Denken Sie auch an all die anderen Leute, die vielleicht auf Ihr Problem gestoßen sind, wenn Sie Ihre Frage beantworten, werden Sie auch ihnen helfen.

4voto

Phani Kumar Punkte 51

Zusammen mit den folgenden Befehlszeilenparametern,

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

Manchmal wird bei Linux-Servern die imx-Verbindung nicht erfolgreich hergestellt. Das liegt daran, dass bei Cloud-Linux-Hosts in /etc/hosts der Hostname in die Host-Adresse aufgelöst wird.

Der beste Weg, das Problem zu beheben, ist, den betreffenden Linux-Server von einem anderen Rechner im Netzwerk aus anzupingen und die IP-Adresse des Hosts in der

-Djava.rmi.server.hostname=IP address that obtained when you ping that linux server.

Verlassen Sie sich aber niemals auf die IP-Adresse, die Sie vom Linux-Server mit ifconfig.me erhalten. Die IP-Adresse, die Sie dort erhalten, ist eine maskierte, die in der Host-Datei vorhanden ist.

4voto

Russell Bie Punkte 186

Die unten aufgeführten Optionen funktionieren bei mir:

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.rmi.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname={host name}

und denken Sie daran, den Port 9010 auf dem Server zu öffnen

sudo ufw allow 9010/udp
sudo ufw allow 9010/tcp
sudo ufw reload

2voto

Wasif Punkte 151

Führen Sie Ihre Java-Anwendung mit den folgenden Befehlszeilenparametern aus:

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

Es ist wichtig, die -Dcom.sun.management.jmxremote.ssl=false wenn Sie keine digitalen Zertifikate auf dem jmx-Host einrichten wollen.

Wenn Sie Ihre Anwendung auf einem Rechner mit der IP-Adresse 192.168.0.1 , offen jconsole , setzen 192.168.0.1:8855 en el Entfernter Prozess Feld, und klicken Sie auf Verbinden Sie .

0 Stimmen

Welches Verhalten ist zu erwarten, wenn Sie vergessen -Dcom.sun.management.jmxremote.ssl=false ? Sollte jconsole eine Fehlermeldung anzeigen, oder würde die Verbindung einfach nicht zustande kommen?

2voto

Hari Krishna Punkte 3083

Schritt 1: Führen Sie die Anwendung mit den folgenden Parametern aus.

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

Die obigen Argumente binden die Anwendung an den Port 9999.

Schritt 2: Starten Sie jconsole, indem Sie den Befehl jconsole in der Eingabeaufforderung oder im Terminal ausführen.

Wählen Sie "Remote Process:", geben Sie die URL {IP_Address}:9999 ein und klicken Sie auf die Schaltfläche Connect, um eine Verbindung zur Remote-Anwendung herzustellen.

Sie können diese enlace für eine vollständige Bewerbung.

2voto

Archit Puri Punkte 348

LOKALEN PROZESS JCONSOLE mit der Option "Entfernter Prozess" laufen lassen

Für die lokale Ausführung hat das bei mir funktioniert -

Ich habe dies in meinem vm args -

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=6001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote.rmi.port=6001
  • Ich öffnete JConsole über Intellij Terminal
  • Es zeigte mir alle PIDs in grau im lokalen
  • Ich wählte also einen entfernten Prozess und meldete mich mit dem Host localhost:6001 an.
  • Leeren Benutzernamen und Passwort behalten
  • Klicken Sie dann auf Verbinden

  • Stellen Sie sicher, dass kein anderer Prozess auf Port 6001 läuft. Sie können auch andere Ports verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X