Frage

Ich suche:

  • Was JMX ist.
  • Wo ich einige gute JMX finden Tutorials.
  • Was JMX kann als ich zur Verfügung stellen Java EE-Programmierer.
  • ich sonst noch etwas sollte sich bewusst sein, von.
War es hilfreich?

Lösung

JMX ist eine Art und Weise zu betrachten, und den Laufzeitstatus Ihrer Anwendung zu manipulieren. Es ist etwas im Konzept ähnlich wie SNMP, ob das hilft. IMO, es ist unverzichtbar für die Überwachung und das Verständnis Server-Typ-Anwendungen, die keine andere Benutzeroberfläche neben Schreiben in eine Protokolldatei haben könnten.

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

Hier ist ein trivial - aber arbeiten - 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();
    }
}

Übersetzen und TestServer.class wie gewohnt laufen, Feuer jconsole, eine Verbindung zum Testserver (es automatisch angezeigt werden, sonst Kommentare in Code siehe oben), dann sehen Sie die Registerkarte ‚MBeans‘, und Sie werden sehen, unsere Instanz mit dem Namen myapp:service=MyServer. Sie können den aktuellen „uptime“, anzeigen und FooCounter Schritt alle 5 Sekunden beobachten. Sie können auch FooCounter zu was auch immer (long) Wert gewünscht wird, und die printStuff Methode mit jedem String-Argument aufrufen.

Natürlich ist dies ein lächerlicher „server“, aber hoffentlich wird ein einfaches Ausführungsbeispiel mit Hilfe des Gesamtkonzept erläutert. Die Lage, in spähen und eine laufende App zu manipulieren

Es gibt eine Menge von zusätzlichen Funktionen und verschiedene Arten von MBeans, sondern nur die oben gezeigt Vanille JMX geht ein langer Weg, meiner Meinung nach.

Andere Tipps

Auf den Punkt gebracht JMX können Sie aus der Ferne Methoden aufrufen oder ausgesetzt Daten aus dem Inneren eines laufenden JVM anzuzeigen. Viele Anwendungen verwenden JMX Art ein entferntes Armaturenbrett, um ihre laufenden JVMs, um Remote-Management zur Verfügung zu stellen zu befestigen.

Zum Beispiel, wenn Sie einen App-Server auf einem Computer ausgeführt haben, mit JMX wäre es möglich, remote auf die freiliegenden Informationen über diesen Server anzuzeigen. Es ist auch möglich, eigene JMX MBeans zu codieren, die alle Variablen und Methoden in Ihrer Anwendung aussetzen können. Die freiliegenden Variablen können dann aus der Ferne für bestimmte Bedingungen zu testen „abgefragt“ werden Sie gerne darüber wissen.

Eine andere nützliche Sache über JMX ist, dass Sie aus der Ferne Variablen on the fly ändern können. Zum Beispiel, wenn Sie irgendeine Art von Pool eingerichtet haben, dass eine maximale Gesamtmenge hat, kann dieser Höchstbetrag der Ferne geändert werden, ohne dass Konfigurationsdateien auf dem Anwendungsserver neu zu starten oder ändern zu müssen.

jconsole wird von Sun mit Java bereitgestellt leicht in der Lage sein Ihre MBeans Remote-Anzeige ohne eigene Client-Lösung codieren zu müssen. Sie könnten auch die MBeans mit einer benutzerdefinierten Lösung verbrauchen, die Ihnen ausgezeichnete Flexibilität geben können.

Auch gibt es bereits einige Monitoring-Software, die mit JMX MBean Überwachung kommen eingebaut. Zenoss und Applications Manager 8 tun dies, um ein paar zu nennen.

Addition:

Es gibt bereits eine Menge Software, die den Vorteil von JMX nimmt. Tomcat setzt Informationen, die zugänglich über jconsole ist und so auch JBoss Application Server.

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

„JSR 262 definiert einen Anschluss für die JMX Remote API, die Web-Services verwendet JMX Instrumentierung zur Verfügung remote machen. Kunden müssen Java-Anwendungen nicht sein, kann aber sein.“

Es ist sehr wahrscheinlich, dass JSR 262 wird ein Teil der nächsten Java-Version (Java 7) sein.

Es gibt ein java.net Projekt für einen JMX WS-Anschluss der abhängig auf WiseMan Projekt . Wiseman ist eine Open-Source-Java-Implementierung von WS-Management-Standard.

Dies sind die beiden, die ich lesen, wenn zuerst auf JMX Lesen auf.

Sun Tutorial: http://java.sun.com/ docs / Bücher / tutorial / JMX / index.html

Spring 2.5 / JMX: http: // statisch. springframework.org/spring/docs/2.5.x/reference/jmx.html

Sie können auch die JMX-Tag Wiki hier auf Stackoverflow gehen sehen, ich es ein paar Tage aktualisiert vor aufzulisten ziemlich viel, was Sie gefragt, und einige trugen zusätzliche Informationen:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top