Ich führe eine Java-Anwendung auf einer Java 6-VM auf einem Remote-Windows XP aus, auf dem ich jvisualvm.exe ausführen kann, um automatisch eine Verbindung zur laufenden Anwendung herzustellen.
Jetzt muss ich diese Anwendung von meinem lokalen Computer aus verbinden, aber ich kenne die JMX-Portnummer des Remotecomputers nicht. Wo kann ich es finden? Oder muss ich diese Anwendung mit einigen VM-Parametern neu starten, um die Portnummer anzugeben?
Nachdem ich die Frage How to find the JMX port in a server gelesen hatte, führte ich den Befehl auf dem Remote-Computer aus
netstat -apn
aber nichts bekommen.
Jetzt muss ich diese Anwendung von meinem lokalen Computer aus verbinden, aber ich kenne die JMX-Portnummer des Remotecomputers nicht. Wo kann ich es finden? Oder muss ich diese Anwendung mit einigen VM-Parametern neu starten, um die Portnummer anzugeben?
Standardmäßig veröffentlicht JMX nicht auf einem Port, es sei denn, Sie geben die Argumente auf dieser Seite an: So aktivieren Sie JMX…
-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
-Djava.rmi.server.hostname=localhost
HINWEIS: Sie müssen auf die Sicherheitsaspekte einiger der oben genannten Einstellungen achten.
Wenn Sie es ausführen, sollten Sie auch auf diese Systemeigenschaften zugreifen können, um zu sehen, ob sie festgelegt wurden:
if (System.getProperty("com.sun.management.jmxremote") == null) { System.out.println("JMX Remote ist deaktiviert"); } anders [
String portString = System.getProperty("com.sun.management.jmxremote.port");
if (portString != null) {
System.out.println("JMX running on port "
+ Integer.parseInt(portString));
}
}
Depending on how the server is connected, you might also have to specify the following parameter. As part of the initial JMX connection, jconsole connects up to the RMI port to determine which port the JMX server is running on. When you initially start up a JMX enabled application, it looks its own hostname to determine what address to return in that initial RMI transaction. If your hostname is not in /etc/hosts
or if it is set to an incorrect interface address then you can override it with the following:
-Djava.rmi.server.hostname=<IP address>
As an aside, my SimpleJMX package allows you to define both the JMX server and the RMI port or set them both to the same port. The above port defined with com.sun.management.jmxremote.port
is actually the RMI port. This tells the client what port the JMX server is running on.
mögliches Duplikat von How to activate JMX on my JVM for access with jconsole?
– Kunstbristol
26. April 2012 um 11:05 Uhr