Fix Pack 8501

Liberty profile: Examples of accessing MBean attributes and operations

You can use the Liberty profile to access the attributes, and call the operations, of Java™ Management Extensions (JMX) management beans (MBeans).

After you obtain an MBeanServer instance (for an application running on the Liberty profile) or an MBeanServerConnection instance (for an external client), you can access the attributes or call the operations of MBeans provided by the Liberty profile. See Working with JMX MBeans on the Liberty profile.

The following code examples assume the variable mbs is an MBeanServer or MBeanServerConnection instance. You can use the provided methods to access the attributes and operations in a similar way to Java reflection. Alternatively, each MBean has a management interface with getter methods for the attributes and methods for the operations. You can use these interfaces via one of the javax.managementJMX.newMBeanProxy methods or one of the javax.management.JMX.newMXBeanProxy methods for MXBeans to obtain a proxy object. The name of a management interface ends with "MXBean". For the names of the management interfaces, see Liberty profile: List of provided MBeans.

Example 1: Check the state of application "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();
}

Example 2: Get response time statistics for servlet “Example Servlet” from application “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();
}

Example 3: Create a web server plug-in configuration file

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");
}
Fix Pack 8550

Example 4: Query status of Web Service Endpoint

import javax.management.ObjectName;
import javax.management.MBeanServerConnection;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;

...

// Init mbs as needed
MBeanServerConnection mbs;

// Get MBeanInfo for specific ObjectName
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);

// Go through attributes to find the interested one
for (MBeanAttributeInfo attr : beanInfo.getAttributes()) {
	if (attr.getName().equals("State")) {
	    String status = String.valueOf(mbs.getAttribute(objName, attr.getName()));
		break;
	}
}
Fix Pack 8550

Example 5: Shut down the CXF server bus

import javax.management.ObjectName;
import javax.management.MBeanServerConnection;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;

...

// Init mbsc as needed
MBeanServerConnection mbs;

// Get MBeanInfo for specific ObjectName
ObjectName objName = new ObjectName("WebSphere:feature=jaxws,bus.id=testCXFJMXSupport-Server-Bus,
    type=Bus,instance.id=1618108530");
MBeanInfo beanInfo = mbsc.getMBeanInfo(objName);

// Go through operation to find the interested one and invoke
for (MBeanOperationInfo operation : beanInfo.getOperations()) {
	if (operation.getName().equals("shutdown")) {
		mbs.invoke(objName, operation.getName(), new Object[] { true }, new String[] { boolean.class.getName() });
		break;
	}
}

Icon that indicates the type of topic Reference topic

Terms and conditions for information centers | Feedback


Timestamp icon Last updated: Monday, 21 April 2014
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-nd-mp&topic=rwlp_mbeans_operation
File name: rwlp_mbeans_operation.html