Utilisez AdminClient pour interroger les noms d'objets MBean ObjectNames. Une fois l'instance AdminClient obtenue, vous pouvez appeler queryNames pour extraire une liste de noms d'objets MBean en fonction de votre chaîne de requête. Pour extraire tous les noms d'objets, vous pouvez utiliser l'exemple de code ci-dessous. Si vous avez spécifié une chaîne de requête, vous obtenez un sous-ensemble de noms d'objets.javax.management.ObjectName on = new javax.management.ObjectName("WebSphere:*");
Set objectNameSet= ac.queryNames(on, null);
// Check properties like type, name, and process to find a specified ObjectName
Après avoir extrait tous les noms d'objets, vous pouvez utiliser l'exemple de code suivant pour extraire tous les noms de noeuds :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"));
}
}
Remarque : Seuls les noeuds démarrés sont renvoyés.
Pour répertorier les serveurs exécutés sur le noeud, vous
pouvez vérifier le nom et le type de noeud de tous les ObjectNames ou
utiliser l'exemple de code suivant :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);
}
Appelez des opérations sur PerfMBean via AdminClient. Une fois le(s) PerfMBean(s) obtenu(s) sur le serveur d'applications à partir duquel vous voulez extraire des données PMI, vous pouvez appeler les opérations suivantes sur le PerfMBean via l'API AdminClient : // setStatisticSet: Enable PMI data using the pre-defined statistic sets.
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: Returns the current statistic set.
String setname = (String) ac.invoke (perfOName, "getStatisticSet", null, null);
// setCustomSetString: Customizing PMI data that is enabled using fine-grained control.
// This method allows to enable or disable statistics selectively. The format of the custom
// set specification string is STATS_NAME=ID1,ID2,ID3 seperated by ':', where STATS_NAME
//and IDs are defined in WS*Stat interfaces in com.ibm.websphere.pmi.stat package.
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);
// Note: Statistics that are not listed in the set string are not changed.
// getCustomSetString: Returns the current custom set specification as a string
String setstring = (String) ac.invoke (perfOName, "getCustomSetString", null, null);
// setInstrumentationLevel: set the instrumentation level
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: get the instrumentation level
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: set the instrumentation level (deprecated in V6.0)
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: get the instrumentation level (deprecated in V6.0)
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: get PMI static config info for all the MBeans
configs = (PmiModuleConfig[])ac.invoke(perfOName, "getConfigs", null, null);
// getConfig: get PMI static config info for a specific MBean
ObjectName[] params = {objectName};
String[] signature= { "javax.management.ObjectName" };
config = (PmiModuleConfig)ac.invoke(perfOName, "getConfig", params, signature);
// getStatsObject: you can use either ObjectName or MBeanStatDescriptor
Object[] params = new Object[2];
params[0] = objectName; // either ObjectName or or 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);
// Note: The returned data only have dynamic information (value and time stamp).
// See PmiJmxTest.java for additional code to link the configuration information with the
// returned data.
// getStatsArray: you can use either ObjectName or MBeanStatDescriptor
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);
// Note: The returned data only have dynamic information (value and time stamp).
// See PmiJmxTest.java for additional code to link the configuration information with the
// returned data.
// listStatMembers: navigate the PMI module trees
Object[] params = new Object[]{mName};
String[] signature= new String[]{"javax.management.ObjectName"};
MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke(perfOName,
"listStatMembers", params, signature);
//or,
// Object[] params = new Object[]{mbeanSD};
// String[] signature= new String[]{"com.ibm.websphere.pmi.stat.MBeanStatDescriptor"};
// MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke
// (perfOName, "listStatMembers", params, signature);
// Refer to the API documentation for deprecated classes
- Pour utiliser un MBean individuel, vous devez extraire l'instance AdminClient et le nom d'objet (ObjectName) pour le MBean individuel. Vous pouvez alors simplement obtenir l'attribut Stats sur MBean.