MBean 属性および操作にアクセスする例

Liberty プロファイルを使用して、Java™ Management Extensions (JMX) 管理 Bean (MBean) の属性にアクセスしたり、その操作を呼び出したりすることができます。

MBeanServer インスタンス (Liberty プロファイルで実行されているアプリケーションの場合) または MBeanServerConnection インスタンス (外部クライアントの場合) を取得すると、Liberty プロファイルで提供されている MBean の属性にアクセスしたり、MBean の操作を呼び出したりすることができます。『Liberty プロファイルでの JMX MBean の使用』を参照してください。

以下のコード例では、変数 mbsMBeanServer または MBeanServerConnection インスタンスであるものとしています。 提供されているメソッドを使用して、Java リフレクションと同様の方法で、属性および操作にアクセスできます。また、各 MBean には、属性用の getter メソッドおよび操作用のメソッドを備えた管理インターフェースが用意されています。javax.managementJMX.newMBeanProxy メソッドのいずれかまたは javax.management.JMX.newMXBeanProxy メソッドのいずれかでこれらのインターフェースを使用して、MBean でプロキシー・オブジェクトを取得できます。管理インターフェースの名前は "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」からのサーブレット「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 サービス・エンドポイントの照会状況

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

トピックのタイプを示すアイコン 参照トピック

インフォメーション・センターに関するご使用条件 | フィードバック


タイム・スタンプ・アイコン 最終更新: 2015 年 6 月 17日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_mbeans_operation
ファイル名: rwlp_mbeans_operation.html