Wie stelle ich mit JMX eine Verbindung zu einem Java-Programm auf localhost jvm her?
Ich soll eine Verbindung zu einem java-Programm auf localhost jvm über JMX. In anderen Worten: ich möchte zur Entwicklung eines JMX-client-config ein java-Programm auf localhost.
- Nicht empfehlen die Verwendung von JConsole! JConsole ist nicht geeignet, da es allgemein JMX-client und haben negative Auswirkungen auf Haupt-Programm-performance.
- Proben, die auf oracle-Website zu verwenden RMIConnector und host:port params, aber ich weiß nicht:
wo sollte der jmx-port? - JConsole haben eine option, um die Verbindung zu java-Prozesse nach PID. Aber ich finde nicht jede Methode in der JMX-api, die PID als input-param.
InformationsquelleAutor der Frage mjafari | 2011-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir etwa den folgenden verwenden, um programmgesteuert eine Verbindung zu unserer JMX-Server. Sie sollten Ihre server mit etwas wie die folgenden Argumente:
Bindung an eine bestimmte Adresse, die Sie hinzufügen müssen, die folgende VM-Argumente:
Dann können Sie eine Verbindung zu Ihrem server mithilfe der JMX-client-code wie dem folgenden:
Wir haben auch code, können Sie ein Programm veröffentlichen, die sich auf einen bestimmten port außerhalb des VM-Argumente, aber das ist mehr fu als Sie brauchen, denke ich.
In Bezug auf den Anschluss "pid", die Sie brauchen, um mit Java6 zu tun, es aus dem Java-land soweit ich weiß. Ich habe nicht verwendet die folgenden code, aber es scheint zu funktionieren.
Habe ich auch der Autor von SimpleJMX Paket die macht es einfach, starten Sie ein JMX-server und veröffentlichen Bohnen von remote-clients.
Es ist eine client-Schnittstelle als gut, aber jetzt hat es keine Mechanismen zu finden, die Prozesse nach PID -- nur die host/port-Kombinationen werden unterstützt (6/2012).
InformationsquelleAutor der Antwort Gray
Klären, wenn Sie nur daran interessiert, lokale JMX-Statistiken, die Sie nicht brauchen, um die remote-api. Verwenden Sie einfach
java.lang.management.ManagementFactory
:InformationsquelleAutor der Antwort cwu9T9
Dies erfordert die Verwendung der jmxremote argument bei JVM-Start für den Prozess, den Sie versuchen zu Lesen.
In der Lage sein, es zu tun, ohne pass ein jmxremote argument beim Start. Verwenden Sie die attach-api(nur für Programme die mit Java 6 und höher.
InformationsquelleAutor der Antwort Umang Desai
Einfachsten Mitteln:
InformationsquelleAutor der Antwort berhauz