webentwicklung-frage-antwort-db.com.de

Wie finde ich die Standard-JMX-Portnummer?

Ich führe eine Java Anwendung auf Java 6 VM auf einem entfernten Windows XP aus, auf dem ich jvisualvm ausführen kann. exe, um automatisch eine Verbindung zur laufenden Anwendung herzustellen.

Jetzt muss ich diese Anwendung von meinem lokalen Computer 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 gelesen hatte Wie finde ich den JMX-Port in einem Server? , führte ich den Befehl auf dem Remotecomputer aus

netstat -apn

habe aber nichts.

48
chance

Jetzt muss ich diese Anwendung von meinem lokalen Computer 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 an 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

Wenn Sie ausgeführt werden, sollten Sie in der Lage sein, auf eine dieser Systemeigenschaften zuzugreifen, um festzustellen, ob diese festgelegt wurden:

if (System.getProperty("com.Sun.management.jmxremote") == null) {
    System.out.println("JMX remote is disabled");
} else [
    String portString = System.getProperty("com.Sun.management.jmxremote.port");
    if (portString != null) {
        System.out.println("JMX running on port "
            + Integer.parseInt(portString));
    }
}

Abhängig davon, wie der Server verbunden ist, müssen Sie möglicherweise auch den folgenden Parameter angeben. Als Teil der anfänglichen JMX-Verbindung stellt jconsole eine Verbindung zum RMI-Port her, um festzustellen, auf welchem ​​Port der JMX-Server ausgeführt wird. Wenn Sie eine JMX-fähige Anwendung zum ersten Mal starten, wird ihr eigener Hostname angezeigt, um zu bestimmen, welche Adresse in dieser anfänglichen RMI-Transaktion zurückgegeben werden soll. Wenn Ihr Hostname nicht in /etc/hosts oder wenn es auf eine falsche Schnittstellenadresse eingestellt ist, können Sie diese wie folgt überschreiben:

-Djava.rmi.server.hostname=<IP address>

Abgesehen davon können Sie mit meinem SimpleJMX-Paket sowohl den JMX-Server als auch den RMI-Port definieren oder beide auf denselben Port setzen. Der oben angegebene Port definiert mit com.Sun.management.jmxremote.port ist eigentlich der RMI-Port. Dies teilt dem Client mit, auf welchem ​​Port der JMX-Server ausgeführt wird.

59
Gray