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

Sie können das Liberty-Profil 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 im Liberty-Profil ausgeführte Anwendung) oder eine MBeanServerConnection-Instanz (für einen externen Client) erhalten haben, können Sie auf die Attribute der im Liberty-Profil bereitgestellten MBeans zugreifen und die MBean-Operationen aufrufen. Nähere Informationen hierzu finden Sie unter Mit JMX-MBeans im Liberty-Profil 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 über eine der javax.managementJMX.newMBeanProxy-Methoden oder eine der javax.management.JMX.newMXBeanProxy-Methoden für MXBeans verwenden, 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

Nutzungsbedingungen für Information Center | Feedback


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