AdminClient verwenden, um die Objektnamen der MBean abzufragen. Sobald Sie die AdminClient-Instanz empfangen haben, können Sie queryNames aufrufen, um - je nach Abfragezeichenfolge -
eine Liste von MBean-Objektnamen zu erhalten. Zum Abrufen aller Objektnamen können Sie den folgenden Beispielcode
verwenden. Wenn Sie eine Abfragezeichenfolge angegeben haben, erhalten Sie eine Untergruppe von
Objektnamen. javax.management.ObjectName on = new javax.management.ObjectName("WebSphere:*");
Set objectNameSet= ac.queryNames(on, null);
// Eigenschaften wie Typ, Name und Prozess überprüfen, um einen angegebenen Objektnamen zu finden
Nachdem Sie alle Objektnamen abgerufen haben, können Sie mit dem folgenden Beispielcode
alle Knotennamen abrufen:HashSet nodeSet = new HashSet();
for(Iterator i = objectNameSet.iterator(); i.hasNext(); on = (ObjectName)i.next()) {
String type = on.getKeyProperty("type");
if(type != null && type.equals("Server")) {
nodeSet.add(servers[i].getKeyProperty("node"));
}
}
Anmerkung: Es werden nur Knoten zurückgegeben, die gestartet wurden.
Zum Auflisten der auf dem Knoten ausgeführten Server können Sie für alle Objektnamen den
Knotennamen und -typ überprüfen oder den folgenden Beispielcode verwenden:StringBuffer oNameQuery= new StringBuffer(41);
oNameQuery.append("WebSphere:*");
oNameQuery.append(",type=").append("Server");
oNameQuery.append(",node=").append(mynode);
oSet= ac.queryNames(new ObjectName(oNameQuery.toString()), null);
Iterator i = objectNameSet.iterator ();
while (i.hasNext ()) {
on=(objectName) i.next();
String process= on[i].getKeyProperty("process");
serversArrayList.add(process);
}
Mit AdminClient Operationen für PerfMBean aufrufen. Sobald Sie die PerfMBean(s) des Anwendungsservers, von dem Sie PMI-Daten anfordern möchten, erhalten haben,
können Sie mit der
AdminClient-API die folgenden Operationen für PerfMBean aufrufen: // setStatisticSet: PMI-Daten mit den vordefinierten Statistiksätzen aktivieren.
Object[] params = new Object[] { com.ibm.websphere.pmi.stat.StatConstants.STATISTIC_SET_EXTENDED};
String[] signature = new String[] {"java.lang.String"};
ac.invoke (perfOName, "setStatisticSet", params, signature);
// getStatisticSet: Gibt den aktuellen Statistiksatz zurück.
String setname = (String) ac.invoke (perfOName, "getStatisticSet", null, null);
// setCustomSetString: PMI-Daten anpassen, die mit differenzierter Steuerung aktiviert wurden.
// Mit dieser Methode können Statistiken selektiv aktiviert bzw. inaktiviert werden. Das Format der
// angepassten Spezifikationszeichenfolge ist STATS_NAME=ID1,ID2,ID3,
// getrennt durch einen Doppelpunkt (':'). STATS_NAME und IDs sind in den WS*Stat-Schnittstellen
// des Pakets com.ibm.websphere.pmi.stat definiert.
params[0] = new String (WSJVMStats.NAME + "=" + WSJVMStats.HeapSize);
params[1] = new Boolean (false);
signature = new String[] {"java.lang.String", "java.lang.Boolean"};
ac.invoke (perfOName, "setCustomSetString", params, signature);
// Anmerkung: In der set-Zeichenfolge nicht aufgelistete Statistiken werden nicht geändert.
// getCustomSetString: Gibt die aktuelle angepasste set-Spezifikation als Zeichenfolge zurück
String setstring = (String) ac.invoke (perfOName, "getCustomSetString", null, null);
// setInstrumentationLevel: Instrumentierungsebene festlegen
params[0] = new MBeanLevelSpec(objectName, new int[]{WSJVMStats.HEAPSIZE});
params[1] = new Boolean(true);
signature= new String[]{ "com.ibm.websphere.pmi.stat.MBeanLevelSpec", "java.lang.Boolean"};
ac.invoke(perfOName, "setInstrumentationLevel", params, signature);
// getInstrumentationLevel: Instrumentierungsebene abrufen
params[0] = objectName;
params[1] = new Boolean(recursive);
String[] signature = new String[] { "javax.management.ObjectName", "java.lang.Boolean"};
MBeanLevelSpec[] mlss = (MBeanLevelSpec[])ac.invoke(perfOName, "getInstrumentationLevel", params, signature);
// setInstrumentationLevel: Instrumentierungsebene festlegen (wird ab Version 6.0 nicht weiter unterstützt)
params[0] = new MBeanLevelSpec(objectName, optionalSD, level);
params[1] = new Boolean(true);
signature= new String[]{ "com.ibm.websphere.pmi.stat.MBeanLevelSpec", "java.lang.Boolean"};
ac.invoke(perfOName, "setInstrumentationLevel", params, signature);
// getInstrumentationLevel: Instrumentierungsebene abrufen (wird ab Version 6.0 nicht weiter unterstützt)
Object[] params = new Object[2];
params[0] = new MBeanStatDescriptor(objectName, optionalSD);
params[1] = new Boolean(recursive);
String[] signature= new String[]{ "com.ibm.websphere.pmi.stat.MBeanStatDescriptor", "java.lang.Boolean"};
MBeanLevelSpec[] mlss = (MBeanLevelSpec[])ac.invoke(perfOName, "getInstrumentationLevel", params, signature);
// getConfigs: Statische PMI-Konfigurationsdaten für alle MBeans abrufen
configs = (PmiModuleConfig[])ac.invoke(perfOName, "getConfigs", null, null);
// getConfig: Statische PMI-Konfigurationsdaten für eine bestimmte MBean abrufen
ObjectName[] params = {objectName};
String[] signature= { "javax.management.ObjectName" };
config = (PmiModuleConfig)ac.invoke(perfOName, "getConfig", params, signature);
// getStatsObject: Sie können ObjectName oder MBeanStatDescriptor verwenden
Object[] params = new Object[2];
params[0] = objectName; //ObjectName oder MBeanStatDescriptor
params[1] = new Boolean(recursive);
String[] signature = new String[] { "javax.management.ObjectName", "java.lang.Boolean"};
Stats stats = (Stats)ac.invoke(perfOName, "getStatsObject", params,
signature);
// Anmerkung: Die zurückgegebenen Daten enthalten nur dynamische Informationen (Wert und Zeitmarke).
// Weiteren Code für die Verbindung von Konfigurationsdaten und zurückgegebenen Daten finden Sie
// in der Datei PmiJmxTest.java.
// getStatsArray: Sie können ObjectName oder MBeanStatDescriptor verwenden
ObjectName[] onames = new ObjectName[]{objectName1, objectName2};
Object[] params = new Object[]{onames, new Boolean(true)};
String[] signature = new String[]{"[Ljavax.management.ObjectName;", "java.lang.Boolean"};
Stats[] statsArray = (Stats[])ac.invoke(perfOName, "getStatsArray", params, signature);
// Anmerkung: Die zurückgegebenen Daten enthalten nur dynamische Informationen (Wert und Zeitmarke).
// Weiteren Code für die Verbindung von Konfigurationsdaten und zurückgegebenen Daten finden Sie
// in der Datei PmiJmxTest.java.
// listStatMembers: Navigieren durch die Baumstruktur der PMI-Module
Object[] params = new Object[]{mName};
String[] signature= new String[]{"javax.management.ObjectName"};
MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke(perfOName, "listStatMembers", params, signature);
// oder
// Object[] params = new Object[]{mbeanSD};
// String[] signature= new String[]{"com.ibm.websphere.pmi.stat.MBeanStatDescriptor"};
// MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke
// (perfOName, "listStatMembers", params, signature);
// Informationen zu veralteten Klassen finden Sie in der API-Dokumentation.
- Wenn Sie eine bestimmte MBean verwenden möchten, gehen Sie wie folgt vor: Sie müssen die
AdminClient-Instanz und den Objektnamen für die spezifische MBean abrufen. Anschließend können Sie einfach das
Stats-Attribut für die MBean anfordern.