Beispiele für den Zugriff auf MBean-Attribute und -Operationen

Sie können Liberty verwenden, um auf die Attribute von JMX-MBeans (Java™ Management Extensions) zuzugreifen und die Operationen dieser MBeans aufzurufen.

Sobald Sie eine MBeanServer-Instanz (für eine in Liberty ausgeführte Anwendung) oder eine MBeanServerConnection-Instanz (für einen externen Client) erhalten haben, können Sie auf die Attribute der in Liberty bereitgestellten MBeans zugreifen und die MBean-Operationen aufrufen. Nähere Informationen hierzu finden Sie unter Mit JMX-Beans in Liberty arbeiten.

In den folgenden Codebeispielen wird angenommen, dass die Variable mbs eine Instanz von MBeanServer oder MBeanServerConnection ist. Sie können die bereitgestellten Methoden verwenden, um ähnlich wie bei der Java-Reflexion auf die Attribute und Operationen zuzugreifen. Alternativ hat jede MBean eine Managementschnittstelle mit Getter-Methoden für die Attribute und Methoden für die Operationen. Sie können diese Schnittstellen verwenden, indem Sie eine der javax.managementJMX.newMBeanProxy-Methoden oder eine der javax.management.JMX.newMXBeanProxy-Methoden für MXBeans implementieren, um ein Proxy-Objekt anzufordern. Der Name einer Managementschnittstelle endet mit "MXBean". Die Namen der Managementschnittstellen finden Sie unter Liste der bereitgestellten MBeans.

Beispiel 1: Status der Anwendung "myApp" überprüfen

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");	
		// alternativ ein Proxy-Objekt anfordern
		ApplicationMBean app = JMX.newMBeanProxy(mbs, myAppMBean, ApplicationMBean.class);
		state = app.getState();
}

Beispiel 2: Antwortzeitstatistiken für das Servlet "Example Servlet" aus der Anwendung "myApp" abrufen

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");
		// alternativ ein Proxy-Objekt anfordern
		ServletStatsMXBean servletStats = JMX.newMXBeanProxy(mbs, servletMBean, ServletStatsMXBean.class);
		StatisticsMeter meter = servletStats.getResponseTimeDetails();
		StatisticsReading reading = meter.getReading();
		mean = reading.getMean();
		standardDeviation = reading.getStandardDeviation();
}

Beispiel 3: Web-Server-Plug-in-Konfigurationsdatei erstellen

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() 
  });
		// alternativ ein Proxy-Objekt verwenden
		GeneratePluginConfigMBean plugin = JMX.newMBeanProxy(mbs, name, GeneratePluginConfigMBean.class);
		plugin.generatePluginConfig("installRoot", "serverName");
}

Beispiel 4: Status des Web-Service-Endpunkts abfragen

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

...

// MBS ggf. initialisieren
MBeanServerConnection mbs;

// MBeanInfo für jeweiligen ObjectName abrufen
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);

// Attribute durcharbeiten, um das gewünschte zu finden
for (MBeanAttributeInfo attr : beanInfo.getAttributes()) {
		if (attr.getName().equals("State")) {
	    	    String status = String.valueOf(mbs.getAttribute(objName, attr.getName()));
		break;
	}
}

Beispiel 5: CXF-Serverbus beenden

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

...

// mbsc ggf. initialisieren
MBeanServerConnection mbs;

// MBeanInfo für jeweiligen ObjectName abrufen
ObjectName objName = new ObjectName("WebSphere:feature=jaxws,bus.id=testCXFJMXSupport-Server-Bus,
    type=Bus,instance.id=1618108530");
MBeanInfo beanInfo = mbsc.getMBeanInfo(objName);

// Operationen durcharbeiten, um die gewünschte zu finden, und Operation aufrufen
for (MBeanOperationInfo operation : beanInfo.getOperations()) {
		if (operation.getName().equals("shutdown")) {
				mbs.invoke(objName, operation.getName(), new Object[] { true }, new String[] { boolean.class.getName() });
		break;
	}
}

Symbol das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_mbeans_operation
Dateiname: rwlp_mbeans_operation.html