JMX MBean
Der Adapter ermöglicht den Zugriff auf MBeans des lokalen JMX-Servers. Dabei können MBeans gesucht, MBean-Attribute gelesen und gesetzt, MBean-Operationen aufgerufen sowie MBean-Metadaten und Schlüsseleigenschaften separat ausgegeben werden.
Dieser Adapter erwartet je nach gewählter Operation eine spezifische Input-XML-Struktur. Der Adapter gibt immer ein XML-Dokument aus, das in Abhängigkeit von der gewählten Operation Informationen über MBeans, die Ergebnisse der aufgerufenen MBean-Methoden oder ggf. Fehlermeldungen enthält.
Eigenschaften (Properties)
| Operation | Bestimmt, welche Operation der Adapter durchführt Mögliche Werte:
|
Parameter
| Adapter | Hauptklasse des Adapters (nicht verändern!) Mögliche Werte: |
Statuswerte
1 | Die Operation wurde erfolgreich ausgeführt. |
0 | Die Operation wurde erfolgreich ausgeführt, jedoch ohne Ergebnis. |
-1 | Die Operation ist aufgrund eines technischen Fehlers fehlgeschlagen. |
Input
Dieser Adapter erwartet für die Operationen Find MBeans und Execute Operations eine adapterspezifische Input-XML-Struktur, siehe unten. Diese Input-XML-Struktur kann über XSL-Mappings in Abhängigkeit von den verarbeiteten Daten dynamisch generiert werden.
Operation: Find MBeans
Über die Operation Find MBeans können Sie nach MBeans suchen. Alle MBeans, die dem Suchmuster entsprechen, werden ausgegben. Der Adapter erwartet bei dieser Operation folgendes Input-XML-Dokument.
<Elementname>
<Query objectname="Suchausdruck" attribut="..." />
</Elementname>
Das Input-XML-Dokument besitzt ein beliebiges Wurzelement und beliebig viele Elemente <Query>. Jedes Element <Query> enthält im Attribut objectname einen Suchausdruck für den MBean-Objektnamen, der nach dem Muster Domänenname:Schlüssel bzw. Domänenname:Schlüsselname=Wert aufgebaut ist; siehe http://java.sun.com/javase/6/docs/api/javax/management/ObjectName.html.
Der Suchausdruck kann die Platzhalter (? und *) enthalten. Alle zusätzlich angegebenen Attribute werden unverändert zum Ausgabe-Dokument durchgereicht.
Beachten Sie:
Je nach verwendetem Applikations-Server können Namensauflösungen fehlerhaft implementiert sein. So löst der MBean-Server von JBoss Platzhalter ggf. nicht auf, wenn Sie in Schlüsselnamen und -werten stehen.
Jeder Objektname muss durch einen Schlüssel qualifiziert werden. Wenn alle Instanzen des JMX-Objekts angesprochen werden sollen, ergänzen Sie den Objektnamen um
:*.
Beispiel
Die folgende Suchanfrage sucht innerhalb der Domänen de.softproject.X0 bis de.softproject.Xz nach allen MBeans, deren Schlüssel ( Key Property ) name mit X4 beginnt, und reicht ein Attribut sampleAttribute="1" ans Ausgabedokument weiter.
<JMX>
<Query objectname="de.softproject.X?:name=X4*" sampleAttribute="1" />
</JMX>
Der Adapter gibt beispielsweise folgendes XML-Dokument mit den Sucherergebnissen aus:
<MBeans>
<Query objectname="de.softproject.X?:name=X4*" sampleAttribute="value">
<MBean objectname="de.softproject.X4:name=GlobalContextManager"
domain="de.softproject.X4" keyProperties="name=GlobalContextManager">
<KeyProperty name="name">GlobalContextManager</KeyProperty>
</MBean>
<MBean objectname="de.softproject.X4:name=X4Management"
domain="de.softproject.X4" keyProperties="name=X4Management">
<KeyProperty name="name">X4Management</KeyProperty>
</MBean>
</Query>
</MBeans>
Operation: Execute Operations
Über die Operation Execute Operations können Sie MBean-Operationen aufrufen, Attribute lesen und setzen sowie MBean-Metadaten und Schlüsseleigenschaften separat ausgeben. Der grundsätzliche Aufbau des Input-XML-Dokument ist identisch wie bei der Operation Find MBeans, jedoch können innerhalb des Elements <Query> unterschiedliche Elemente einfügt werden. Diese Elemente repräsentieren Anweisungen, die im Folgenden erläutert werden.
Beachten Sie:
Wie bei Operation
Find MBeanskann auch bei OperationExecute Operationsder Suchausdruck in Attributobjectnamedie Platzhalter?und*enthalten.Jeder Objektname muss durch einen Schlüssel qualifiziert werden. Wenn alle Instanzen des JMX-Objekts angesprochen werden sollen, ergänzen Sie den Objektnamen um
:*.
Metadaten auslesen
Das Kindelement <GetMetadata/> des Elements <Query> weist den Adapter an, sämtliche Metadaten der entsprechenden MBeans auszugeben:
Im Attribut
class: Nennt die Implementierungsklasse<Description>: Enthält einen Beschreibungstext der MBean<Constructors>: Listet Konstruktoren mit zugehörigen Operationen und Beschreibung auf<Attributes>: Führt alle Attribute der MBean auf<Operations>: Führt alle Operationen der MBean mit Name, Beschreibung, Datentypen, Parametern usw.<Notifications>: Führt ggf. Benachrichtigungen der MBean auf
<Query objectname="Suchausdruck" attribut="wert">
<GetMetadata/>
</Query>
Schlüsseleigenschaften separat ausgeben
Das Kindelement <ExpandKeyProperties/> des Elements <Query> weist den Adapter an, alle Schlüsseleigenschaften in jeweils einem separaten Element <Property> auszugeben:
<Query objectname="Suchausdruck" attribut="wert">
<ExpandKeyProperties/>
</Query>
Attributwerte auslesen
Das Kindelement <GetAttributeValue/> des Elements <Query> weist den Adapter an, Werte zu MBean-Attributen auszugeben, die in jeweils einem Kindelement <Attribute> im Attribut name angegeben werden:
<Query objectname="Suchausdruck" attribut="wert">
<GetAttributeValue>
<Attribute name="Attribut-Name" />
</GetAttributeValue>
</Query>
Attributwerte auslesen
Das Kindelement <SetAttributeValue/> des Elements <Query> weist den Adapter an, MBean-Attributwerte zu setzen. Dabei wird für jedes MBean-Attribut in einem Element <Attribute> festgelegt:
Im Attribut
name: Name des zu setzenden MBean-AttributsIm Attribut
class: Datentyp des zu setzenden MBean-AttributsDer Wert des MBean-Attributs wird im Elementinhalt angegeben.
<Query objectname="Suchausdruck" attribut="wert">
<SetAttributeValue>
<Attribute name="Attribut-Name" class="Datentyp"></Attribute>
</SetAttributeValue>
</Query>
Das Kindelement <InvokeOperation/> des Elements <Query> weist den Adapter an, eine MBean-Operation aufzurufen. Das Element <InvokeOperation/> muss im Attribut name den Namen der MBean-Operation enthalten. In beliebig vielen Kindelementen <Parameter> wird der jeweilige Parameterwert angegeben, im Attribut class wird der Datentyp des Parameterwerts definiert.
Folgende Datentyp-Angaben im Attribut class können verwendet werden:
|
|
|
Da MBean-Parameter keine Namen besitzen, ist die Reihenfolge maßgeblich, in der diese notiert werden.
Ein Aufruf einer MBean-Operation erfolgt also durch eine nach folgendem Muster aufgebaute Input-XML-Struktur:
<Query objectname="Suchausdruck" attribut="wert">
<InvokeOperation name="MBean-Operation">
<Parameter class="Datentyp">Parameterwert</Parameter>
</InvokeOperation>
</Query>
Beispiel
Im folgenden Input-XML-Dokument werden Metadaten abgefragt, Schlüsseleigenschaften gelistet, MBean-Attribute gelesen und gesetzt sowie eine MBean-Operation mit zwei Parametern ausgeführt:
<RootElement>
<Query objectname="de.softproject.X?:name=X4Management">
<GetMetadata/>
</Query>
<Query objectname="java.lang*:*">
<ExpandKeyProperties/>
</Query>
<Query objectname="de.softproject.X4.WS*:*" text="enabling WebServices">
<GetAttributeValue>
<Attribute name="InService"/>
</GetAttributeValue>
<SetAttributeValue>
<Attribute name="InService" class="boolean">true</Attribute>
</SetAttributeValue>
</Query>
<Query objectname="de.softproject.X4:name=X4Management"
description="Start a process">
<InvokeOperation name="startProcessByName">
<Parameter class="java.lang.String">1</Parameter>
<Parameter class="java.lang.String">/Project/Folder/Process.wrf
</Parameter>
</InvokeOperation>
</Query>
</RootElement>