MBean 속성 및 조작 액세스에 대한 예제

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

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

다음 코드 예제에서는 mbs 변수가 MBeanServer 또는 MBeanServerConnection 인스턴스라고 가정합니다. 제공된 메소드를 사용하여 Java 리플렉션과 유사한 방식으로 속성과 오퍼레이션에 액세스할 수 있습니다. 또는 각 MBean에는 속성에 대한 Getter 메소드와 조작에 대한 메소드가 포함된 관리 인터페이스가 있습니다. 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;
	}
}

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

Information Center 이용 약관 | 피드백


시간소인 아이콘 마지막 업데이트 날짜: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_mbeans_operation
파일 이름: rwlp_mbeans_operation.html