Utilice AdminClient para consultar los ObjectNames MBean. Tras obtener una instancia de AdminClient, puede llamar a queryNames para obtener
una lista de ObjectNames de MBean según cuál sea la serie de consulta. Para obtener todos los
ObjectNames, puede utilizar el código de ejemplo siguiente. Si ha especificado una
serie de consulta, obtendrá un subconjunto de ObjectNames.
javax.management.ObjectName on = new javax.management.ObjectName("WebSphere:*");
Set objectNameSet= ac.queryNames(on, null);
// Seleccione las propiedades como type, name y process para buscar un ObjectName especificado
Después de obtener todos los ObjectNames, puede utilizar el siguiente código de
ejemplo para obtener todos los nombres de nodo:
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"));
}
}
Nota: Sólo se devuelven los nodos iniciados.
Para enumerar los servidores de un nodo, puede comprobar el nombre y el tipo de nodo
de todos los ObjectNames o utilizar el código de ejemplo siguiente:
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);
}
Invoque operaciones sobre PerfMBean mediante AdminClient. Tras obtener los PerfMBeans del servidor de aplicaciones de donde desea obtener
datos de PMI, puede invocar las operaciones siguientes en PerfMBean
mediante la API de AdminClient:
// setStatisticSet: habilitar datos de PMI utilizando los conjuntos de estadísticas predefinidos.
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: devuelve el conjunto de estadísticas actual.
String setname = (String) ac.invoke (perfOName, "getStatisticSet", null, null);
// setCustomSetString: personalizar datos de PMI que se habilitan mediante el control preciso.
// Este método permite habilitar o inhabilitar las estadísticas selectivamente. El formato de la serie de
// especificación de conjunto personalizado es STATS_NAME=ID1,ID2,ID3 separado por ':', donde STATS_NAME
//y los ID se definen en las interfaces WS*Stat del paquete com.ibm.websphere.pmi.stat.
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);
// Nota: las estadísticas que no se listan en la serie del conjunto no se modifican.
// getCustomSetString: devuelve la especificación del conjunto personalizado actual como una serie
String setstring = (String) ac.invoke (perfOName, "getCustomSetString", null, null);
// setInstrumentationLevel: establecer el nivel de instrumentación
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: obtener el nivel de instrumentación
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: establecer el nivel de instrumentación (en desuso en la 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: obtener el nivel de instrumentación (en desuso en la 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: obtener información de configuración estática de PMI para todos los MBeans
configs = (PmiModuleConfig[])ac.invoke(perfOName, "getConfigs", null, null);
// getConfig: obtener información de configuración estática de PMI para un MBean específico
ObjectName[] params = {objectName};
String[] signature= { "javax.management.ObjectName" };
config = (PmiModuleConfig)ac.invoke(perfOName, "getConfig", params, signature);
// getStatsObject: puede utilizar ObjectName o MBeanStatDescriptor
Object[] params = new Object[2];
params[0] = objectName; // u ObjectName o 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);
// Nota: los datos devueltos sólo tienen información dinámica (valor e indicación de fecha y hora).
// Consulte PmiJmxTest.java para obtener código adicional para enlazar la información de configuración
// con los datos devueltos.
// getStatsArray: puede utilizar ObjectName o 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);
// Nota: los datos devueltos sólo tienen información dinámica (valor e indicación de fecha y hora).
// Consulte PmiJmxTest.java para obtener código adicional para enlazar la información de configuración
// con los datos devueltos.
// listStatMembers: navegue por los árboles de módulos PMI
Object[] params = new Object[]{mName};
String[] signature= new String[]{"javax.management.ObjectName"};
MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke(perfOName,
"listStatMembers", params, signature);
//u
// Object[] params = new Object[]{mbeanSD};
// String[] signature= new String[]{"com.ibm.websphere.pmi.stat.MBeanStatDescriptor"};
// MBeanStatDescriptor[] msds = (MBeanStatDescriptor[])ac.invoke
// (perfOName, "listStatMembers", params, signature);
// Consulte la documentación de la API para obtener información sobre las clases en desuso
- Para utilizar un MBean individual: necesita obtener la instancia de AdminClient
y el ObjectName del MBean individual. Ahora puede obtener simplemente
el atributo Stats en el MBean.