MBean 속성 및 조작 액세스 예

Liberty를 사용하여 JMX(Java™ Management Extensions) 관리 Bean(MBean)의 속성에 액세스하고 조작을 호출할 수 있습니다.

MBeanServer 인스턴스(Liberty에서 실행 중인 애플리케이션의 경우) 또는 MBeanServerConnection 인스턴스(외부 클라이언트의 경우)를 확보한 이후에는 Liberty에서 제공하는 MBean의 조작을 호출하거나 속성에 액세스할 수 있습니다. Liberty에서 JMX MBean에 대해 작업의 내용을 참조하십시오.

다음 코드 예에서는 mbs 변수가 MBeanServer 또는 MBeanServerConnection 인스턴스라고 가정합니다. 제공된 메소드를 사용하여 Java 리플렉션과 유사한 방식으로 속성과 조작에 액세스할 수 있습니다. 또는 각 MBean에는 속성에 대한 Getter 메소드와 조작에 대한 메소드가 포함된 관리 인터페이스가 있습니다. MXBean이 프록시 오브젝트를 가져올 수 있도록 javax.managementJMX.newMBeanProxy 메소드 중 하나를 구현하거나 javax.management.JMX.newMXBeanProxy 메소드 중 하나를 구현함으로써 이 인터페이스를 사용할 수 있습니다. 관리 인터페이스의 이름은 "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: 웹 서버 플러그인 구성 파일 작성

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: 웹 서비스 엔드포인트의 상태 조회

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

주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_mbeans_operation.html