표준, 동적 및 개방 사용자 정의 MBean 작성 및 등록
표준, 동적 및 개방 사용자 정의 MBean을 작성하고, 제품 관리 콘솔에 등록할 수 있습니다.
시작하기 전에
새로운 클래스를 MBean의 매개변수로 정의하지 마십시오. 클래스는 모든 프로세스에서 사용 가능하지 않을 수도 있습니다. 새 클래스를 정의해야 하는 경우에는 클래스가 배치 관리자, 노드 에이전트 및 Application Server를 포함하여 모든 프로세스에서 사용 가능한지 확인하십시오. 프로세스에서 클래스를 사용할 수 없는 경우에 여기에 액세스하려고 시도하면 새 클래스에 대한 ClassNotFoundException 예외가 발생합니다.
이 태스크 정보
다음 태스크를 수행하여 표준, 동적 또는 개방 사용자 정의 MBean을 작성한 후 등록하십시오.
프로시저
- 특정 MBean 클래스를 작성하십시오.
- MBea에 대한 MBean 설명자를 XML 언어로 쓰십시오.
- WebSphere® Application Server 런타임 com.ibm.websphere.management.UserMBeanCollaborator 협력자 클래스를 사용하는 코드를 애플리케이션 코드에 삽입하여 MBean을 등록하십시오.
- MBean 인터페이스 및 구현을 위한 클래스 파일, 설명자 XML 파일 및 애플리케이션 Java 아카이브(JAR) 파일을 패키지로 묶으십시오.
결과
예
다음 예제는 관리 서비스로 표준 MBean을 작성 및 등록하는 방법을 보여줍니다.
SnoopMBean.java:
/**
* Use the SnoopMBean MBean, which has a standard mbean interface.
*/
public interface SnoopMBean {
public String getIdentification();
public void snoopy(String parm1);
}
SnoopMBeanImpl.java:
/**
* SnoopMBeanImpl - SnoopMBean implementation
*/
public class SnoopMBeanImpl implements SnoopMBean {
public String getIdentification() {
System.out.println(">>> getIdentification() called...");
return "snoopy!";
}
public void snoopy(String parm1) {
System.out.println(">>> snoopy(" + parm1 + ") called...");
}
}
.xml 파일에서 MBean에 대한 다음 MBean 설명자를 정의하십시오. getIdentification 메소드는 단일 호출 옵션으로 실행하도록 설정되고 snoopy 메소드는 다중 호출 옵션을 사용하도록 설정됩니다. 이러한 옵션은 z/OS® 애플리케이션에만 사용됩니다. WebSphere Application Server for z/OS 옵션은 분산 플랫폼에 적용이 불가능하지만 제거할 필요는 없습니다. 옵션은 분산 플랫폼에서 무시됩니다. 일부 구문은 인쇄를 위해 여러 행으로 나눠집니다.

SnoopMBean.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean type="SnoopMBean"
version="5.0"
platform="dynamicproxy"
description="Sample SnoopMBean to be initialized inside an EJB.">
<attribute name="identification" getMethod="getIdentification"
type="java.lang.String" proxyInvokeType="unicall"/>
<operation name="snoopy" role="operation" type="void" targetObjectType="objectReference"
impact="ACTION" proxyInvokeType="multicall">
<signature>
<parameter name="parm1" description="test parameter" type="java.lang.String"/>
</signature>
</operation>
</MBean>
MBean이 엔터프라이즈 Bean에서 사용된다고 가정해 보십시오. 엔터프라이즈 Bean
ejbCreate 메소드로 MBean을 등록하고 ejbRemove 메소드로 등록을
취소하십시오. //The method MBeanFactory.activateMBean() requires four parameters:
//String type: The type value that you put in this MBean's descriptor. For this example
//the string type is SnoopMBean.
//RuntimeCollaborator co: The UserMBeanCollaborator user MBean collaborator instance
//that you create
//String id: Unique name that you pick
//String descriptor: The full path to the MBean descriptor file
import com.ibm.websphere.management.UserMBeanCollaborator;
//Import other classes here.
.
.
.
static private ObjectName snoopyON = null;
static private Object lockObj = "this is a lock";
.
.
.
/**
* ejbCreate method: Register your Mbean.
*/
public void ejbCreate() throws javax.ejb.CreateException {
synchronized (lockObj) {
System.out.println(">>> SnoopMBean activating for --|" + this + "|--");
if (snoopyON != null) {
return;
}
try {
System.out.println(">>> SnoopMBean activating...");
MBeanFactory mbfactory = AdminServiceFactory.getMBeanFactory();
RuntimeCollaborator snoop = new UserMBeanCollaborator(new SnoopMBeanImpl());
snoopyON = mbfactory.activateMBean("SnoopMBean", snoop, "snoopMBeanId",
"SnoopMBean.xml");
System.out.println(">>> SnoopMBean activation COMPLETED! --|" + snoopyON + "|--");
} catch (Exception e) {
System.out.println(">>> SnoopMBean activation FAILED:");
e.printStackTrace();
}
}
}
.
.
.
/**
* ejbRemove method: Unregister your MBean.
*/
public void ejbRemove() {
synchronized (lockObj) {
System.out.println(">>> SnoopMBean Deactivating for --|" + this + "|--");
if (snoopyON == null) {
return;
}
try {
System.out.println(">>> SnoopMBean Deactivating ==|" + snoopyON + "|== for --|"
+ this + "|--");
MBeanFactory mbfactory = AdminServiceFactory.getMBeanFactory();
mbfactory.deactivateMBean(snoopyON);
System.out.println(">>> SnoopMBean Deactivation COMPLETED!");
} catch (Exception e) {
System.out.println(">>> SnoopMBean Deactivation FAILED:");
e.printStackTrace();
}
}
}