Sonntag, Juni 7, 2020

JMX Definiert

Ich bin auf der Suche nach:

  • Was JMX ist.
  • Wo finde ich einige gute JMX
    Tutorials.
  • Was JMX können, um mich als
    Java EE Programmierer.
  • Muss ich irgendwas anderes beachten
    von.

6 Kommentare

  1. 30

    JMX ist eine Möglichkeit zum anzeigen und manipulieren der Laufzeit Status der Anwendung. Es ist ähnlich im Konzept zu SNMP, ob das hilft. IMO, es ist unerlässlich für die überwachung und das Verständnis server-Typ-Anwendungen, die nicht alle anderen Benutzer-Oberfläche neben dem schreiben einer log-Datei.

    Der grundlegende Ansatz ist, eine Schnittstelle zu schaffen für die Dinge, die Sie überwachen möchten, dann haben Sie eine Klasse die das interface implementieren, dann registrieren Sie eine Instanz der Klasse mit dem „MBeanServer“ (was macht eigentlich die Sachen, die im interface definiert sind zur Verfügung, um JMX-überwachungs-Anwendungen, wie jconsole).

    Hier ist eine trivial-aber arbeitet-Beispiel:

    (Ich gehe davon aus Java 5 oder besser)

    TestServerMBean.java

    public interface TestServerMBean
    {
        public long getUptimeMillis();
        public long getFooCount();
        public void setFooCount(long val);
        public void printStuff(String stuff);
    }

    TestServer.java:

    import java.lang.management.ManagementFactory;
    import java.util.concurrent.atomic.AtomicLong;
    
    import javax.management.ObjectName;
    
    //If jconsole doesn't see this app automatically, invoke the application with the following java flags, and connect
    //'remotely' via jconsole.
    //
    //-Dcom.sun.management.jmxremote
    //-Dcom.sun.management.jmxremote.port=2222 (or whatever)
    //-Dcom.sun.management.jmxremote.authenticate=false
    //-Dcom.sun.management.jmxremote.ssl=false
    public class TestServer implements TestServerMBean
    {
        private final AtomicLong m_counter = new AtomicLong(0L);
        private final long m_startTimeMillis = System.currentTimeMillis();
    
        public void run() throws InterruptedException {
            while (true) {
                m_counter.incrementAndGet();
                Thread.sleep(5000);
            }
        }
    
        public long getFooCount() {
            return m_counter.get();
        }
    
        public void setFooCount(long val) {
            m_counter.set(val);
        }
    
        public long getUptimeMillis() {
            return System.currentTimeMillis() - m_startTimeMillis;
        }
    
        public void printStuff(String stuff) {
            System.out.println(stuff);
        }
    
        public static void main(String[] args) throws Exception {
            TestServer ts = new TestServer();
            ManagementFactory.getPlatformMBeanServer().registerMBean(ts, new ObjectName("myapp:service=MyServer"));
            ts.run();
        }
    }

    Kompilieren und ausführen TestServer.class wie üblich, Feuer bis jconsole, die Verbindung zum TestServer (es wird automatisch angezeigt, sonst siehe Kommentar im code oben), dann schauen sich „MBeans“ Registerkarte, und Sie werden sehen, unsere Instanz mit dem Namen myapp:service=MyServer. Sie können die aktuellen „uptime“ und sehen Sie sich FooCounter Einteilung alle 5 Sekunden. Sie können auch festlegen, FooCounter zu was auch immer (lange) Wert, den Sie möchten, und rufen Sie das printStuff Methode mit beliebigen String-argument.

    Natürlich ist dies eine lächerliche „server“, aber hoffentlich mit einem einfachen Beispiel arbeiten wird die veranschaulichen, das gesamte Konzept: in der Lage sein, einen Blick in und zu manipulieren, eine laufende app.

    Es gibt eine Menge von zusätzlichen Funktionen und verschiedene Arten von MBeans, aber nur die Vanille JMX oben gezeigt wird, geht ein langer Weg, IMO.

    • Tolles Beispiel !
    • schönes Beispiel, ja, aber es macht nicht alles sichtbar in der JConsole
  2. 12

    In einer nussschale JMX erlaubt die Remote-Methoden aufgerufen werden, oder die Sicht freigelegt Daten aus dem inneren einer Laufenden JVM. Eine Menge von Anwendungen verwenden der JMX-auf eine Art anbringen einer remote-dashboard, um Ihre Laufenden JVMs, um remote-management.

    Zum Beispiel, wenn Sie eine app-server läuft auf einer Maschine, mit der JMX-wäre es möglich, Einsicht in das zu schützende Informationen über diesen server. Es ist auch möglich, den code Ihres eigenen JMX MBeans, die können setzen Sie alle Variablen oder Methoden in Ihrer Anwendung. Die exponierte Variablen kann dann „abgefragt“ aus der Ferne zu testen, die für bestimmte Bedingungen, die Sie darüber wissen möchte.

    Andere nützliche Sache über JMX ist, dass man aus der Ferne ändern Sie die Variablen auf das Fliegen. Zum Beispiel, wenn Sie haben eine Art pool eingerichtet, der eine maximale Summe, diesem Höchstbetrag können über Fernsteuerung geändert werden, ohne dass ein Neustart oder änderung der Konfiguration-Dateien auf Ihrem Anwendung-server.

    jconsole ist von Sun mit Java in der Lage sein leicht sehen Sie Ihre MBeans aus der Ferne, ohne code Ihre eigenen client-Lösung. Sie könnten auch verbrauchen die MBeans mit einer benutzerdefinierten Lösung, die Ihnen ausgezeichnete Flexibilität.

    Außerdem gibt es bereits einige monitoring-software, die mit der JMX-MBean-überwachung eingebaut. Zenoss und Applications Manager 8 tun dies, um ein paar Namen.

    Zusatz:

    Gibt es bereits eine Menge software, die die Vorteile von JMX. Tomcat stellt Informationen, erreichbar über jconsole und so ist der JBoss Application Server.

  3. 1

    Vielleicht JSR 262 ist auch Wert, hier erwähnt zu werden.

    „JSR 262 definiert einen Anschluss für die JMX-Remote-API, die Web-Services nutzt, um JMX instrumentation, Remote verfügbar. Clients müssen nicht sein, Java-Anwendungen, kann aber sein.“

    Ist es sehr wahrscheinlich, dass JSR 262 wird Teil der nächsten Java-version (Java 7).

    Es ist ein java.net Projekt für eine JMX-WS-Anschluss das hängt davon ab,WiseMan Projekt. Wiseman ist ein Open-Source-Java-Implementierung von WS-Management-standard.

  4. 0

    Oder Sie können gehen sehen den JMX-tag wiki hier auf StackOverflow habe ich aktualisiert, es vor ein paar Tagen auf der Liste ziemlich viel, was Sie verlangte, und einige trugen zusätzliche info:

    https://stackoverflow.com/tags/jmx/info

    • Ich stellte diese Frage vor 3 Jahren.. ich bin mir ziemlich sicher, dass gar nicht existiert
    • Tag wiki gab, aber der Inhalt war entweder leer oder mit verschiedenen.
    • Gearbeitet an dieser Technologie seit etwa 4 Jahren stellte ich diese Sitzung paar Jahre zurück zu „Einführung in die Java Management Extensions (JMX) -“ an youtube.com/watch?v=F-f2zYeWwwo. Die Folien für diese Sitzung sind verfügbar auf slideshare.net/tarun.telang/java-management-extensions-jmx.

Kostenlose Online-Tests