访问 MBean 属性和操作的示例

您可使用 Liberty 访问 Java™ 管理扩展 (JMX) 管理 Bean (MBean) 的属性以及调用其操作。

在您获得 MBeanServer 实例(对于 Liberty 上运行的应用程序)或 MBeanServerConnection 实例(对于外部客户机)之后,可以访问 Liberty 所提供 MBean 的属性或者调用这些 MBean 的操作。请参阅在 Liberty 上使用 JMX MBean

以下代码示例假定变量 mbsMBeanServerMBeanServerConnection 实例。可以使用所提供的方法,以类似于 Java 反射的方式来访问属性和调用操作。此外,每个 MBean 的管理接口具有用于属性的 getter 方法及用于操作的方法。可使用这些接口,方法是实现某个 javax.managementJMX.newMBeanProxy 方法或某个 javax.management.JMX.newMXBeanProxy 方法以便 MXBean 获取代理对象。管理接口的名称以 “MXBean” 结尾。对于管理接口的名称,请参阅 所提供 MBean 的列表

示例 1:检查应用程序“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();
}

示例 2:从应用程序“myApp”获取 Servlet“Example Servlet”的响应时间统计信息

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();
}

示例 3:创建 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");
}

示例 4:查询 Web Service 端点的状态

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

示例 5:关闭 CXF 服务器总线

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

用于指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_mbeans_operation
文件名:rwlp_mbeans_operation.html