Ejemplos de acceso a atributos y operaciones de MBean
Puede utilizar Liberty para acceder a los atributos e invocar las operaciones de los beans de gestión (MBeans) de JMX (Java™ Management Extensions).
Después de obtener una instancia de MBeanServer (para una aplicación que se ejecuta en Liberty) o una instancia de MBeanServerConnection (para un cliente externo), puede acceder a los atributos o invocar las operaciones de los MBeans proporcionados por Liberty. Consulte Cómo trabajar con los MBeans JMX en Liberty.
En los ejemplos de código siguientes se supone que la variable mbs es una instancia de MBeanServer o MBeanServerConnection. Puede utilizar los métodos proporcionados para acceder a los atributos y las operaciones de un modo similar al reflejo Java. De manera alternativa, cada MBean tiene una interfaz de gestión con métodos getter para los atributos y métodos para las operaciones. Puede utilizar estas interfaces implementando uno de los métodos javax.managementJMX.newMBeanProxy o uno de los métodos javax.management.JMX.newMXBeanProxy para obtener un objeto de proxy para los MXBeans. El nombre de la interfaz de gestión termina en "MXBean". Para ver los nombres de las interfaces de gestión, consulte Lista de MBeans proporcionados.
Ejemplo 1: Comprobación del estado de la aplicación "myApp"
import javax.management.ObjectName;
import javax.management.JMX;
import com.ibm.websphere.application.ApplicationMBean;
...
ObjectName myAppMBean = new ObjectName(
"WebSphere:service=com.ibm.websphere.application.ApplicationMBean,name=myApp");
if (mbs.isRegistered(myAppMBean)) {
String state = (String) mbs.getAttribute(myAppMBean, "State");
// alternatively, obtain a proxy object
ApplicationMBean app = JMX.newMBeanProxy(mbs, myAppMBean, ApplicationMBean.class);
state = app.getState();
}
Ejemplo 2: Obtener estadísticas de tiempo de respuesta para el servlet "Ejemplo de servlet" de la aplicación "myApp"
import javax.management.ObjectName;
import javax.management.openmbean.CompositeData;
import javax.management.JMX;
import com.ibm.websphere.webcontainer.ServletStatsMXBean;
...
ObjectName servletMBean = new ObjectName("WebSphere:type=ServletStats,name=myApp.Example Servlet");
if (mbs.isRegistered(servletMBean)) {
CompositeData responseTimeDetails = (CompositeData) mbs.getAttribute(servletMBean, "ResponseTimeDetails");
CompositeData responseTimeReading = (CompositeData) responseTimeDetails.get("reading");
Double mean = (Double) responseTimeReading.get("mean");
Double standardDeviation = (Double) responseTimeReading.get("standardDeviation");
// alternatively, obtain a proxy object
ServletStatsMXBean servletStats = JMX.newMXBeanProxy(mbs, servletMBean, ServletStatsMXBean.class);
StatisticsMeter meter = servletStats.getResponseTimeDetails();
StatisticsReading reading = meter.getReading();
mean = reading.getMean();
standardDeviation = reading.getStandardDeviation();
}
Ejemplo 3: Creación de un archivo de configuración del plug-in de servidor web
import com.ibm.websphere.webcontainer.GeneratePluginConfigMBean;
...
ObjectName pluginMBean = new ObjectName("WebSphere:name=com.ibm.ws.jmx.mbeans.generatePluginConfig");
if (mbs.isRegistered(pluginMBean)) {
mbs.invoke(pluginMBean, "generatePluginConfig", new Object[] {
"installRoot", "serverName"}, new String[] {
String.class.getName(), String.class.getName()
});
// alternatively, use a proxy object
GeneratePluginConfigMBean plugin = JMX.newMBeanProxy(mbs, name, GeneratePluginConfigMBean.class);
plugin.generatePluginConfig("installRoot", "serverName");
}
Ejemplo 4: estado de la consulta del punto final de servicio web
import javax.management.ObjectName;
import javax.management.MBeanServerConnection;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
...
// Inicializar mbs según sea necesario
MBeanServerConnection mbs;
// Obtener MBeanInfo de ObjectName específico
ObjectName objName = new ObjectName("WebSphere:feature=jaxws,bus.id=testCXFJMXSupport-Server-Bus,
type=Bus.Service.Endpoint,service=\"{http://jaxws.samples.ibm.com.jmx/}TestEndpointService\",
port=\"TestEndpoint\",instance.id=1816106538");
MBeanInfo beanInfo = mbsc.getMBeanInfo(objName);
// Pasar por los atributos para encontrar el de interés
for (MBeanAttributeInfo attr : beanInfo.getAttributes()) {
if (attr.getName().equals("State")) {
String status = String.valueOf(mbs.getAttribute(objName, attr.getName()));
break;
}
}
Ejemplo 5: concluir el bus de servidor de CXF
import javax.management.ObjectName;
import javax.management.MBeanServerConnection;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
...
// Inicializar mbsc según sea necesario
MBeanServerConnection mbs;
// Obtener MBeanInfo de ObjectName específico
ObjectName objName = new ObjectName("WebSphere:feature=jaxws,bus.id=testCXFJMXSupport-Server-Bus,
type=Bus,instance.id=1618108530");
MBeanInfo beanInfo = mbsc.getMBeanInfo(objName);
// Pasar por la operación para encontrar la de interés e invocar
for (MBeanOperationInfo operation : beanInfo.getOperations()) {
if (operation.getName().equals("shutdown")) {
mbs.invoke(objName, operation.getName(), new Object[] { true }, new String[] { boolean.class.getName() });
break;
}
}