Liberty: 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;
	}
}

Icono que indica el tipo de tema Tema de referencia



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_mbeans_operation
Nombre de archivo:rwlp_mbeans_operation.html