MBean 属性および操作にアクセスする例
Liberty を使用して、Java™ Management Extensions (JMX) 管理 Bean (MBean) の属性にアクセスしたり、その操作を呼び出したりすることができます。
MBeanServer インスタンス (Liberty で実行されているアプリケーションの場合) または MBeanServerConnection インスタンス (外部クライアントの場合) を取得すると、Liberty で提供されている MBean の属性にアクセスしたり、MBean の操作を呼び出したりすることができます。『Liberty での JMX MBean の使用』を参照してください。
以下のコード例では、変数 mbs が MBeanServer または MBeanServerConnection インスタンスであるものとしています。 提供されているメソッドを使用して、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」からのサーブレット「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;
}
}