標準、動的、およびオープン・カスタム MBean の作成および登録
標準、動的、オープンなカスタム MBean をそれぞれ作成し、製品管理サービスに登録することができます。
始める前に
新規クラスをご使用の MBean のパラメーターとして定義しないでください。 これらのクラスは、すべてのプロセスで使用可能であるとは限りません。 新規クラスを定義する必要がある場合、そのクラスが、デプロイメント・マネージャー、ノード・エージェント、およびアプリケーション・サーバーを含む、すべてのプロセスで使用可能であることを確認します。 クラスがプロセスで使用可能でない場合にアクセスを試みると、 新規プロセスで ClassNotFoundException 例外が発生します。
このタスクについて
以下のタスクを実行し、標準、動的、またはオープン・カスタム MBean を作成および登録します。
手順
- 特定の MBean クラスを 1 つまたは複数作成します。
- MBean に対して、XML 言語で MBean 記述子を書き込みます。
- WebSphere® Application Server ランタイム com.ibm.websphere.management.UserMBeanCollaborator コラボレーター・クラスを使用するコードを、ご使用のアプリケーション・コードに挿入して、MBean を登録します。
- MBean インターフェースおよび実装のクラス・ファイル、 記述子 XML ファイル、およびアプリケーション Java archive (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 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 で使用されると想定します。
MBean をエンタープライズ Bean ejbCreate メソッドで登録し、
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();
}
}
}