標準、動的、およびオープン・カスタム MBean の作成および登録

標準、動的、オープンなカスタム MBean をそれぞれ作成し、製品管理サービスに登録することができます。

始める前に

このタスクでは、MBean プログラミングに関する基本的な知識があることが前提になっています。MBean プログラミングについて詳しくは、MBean Java™ アプリケーション・プログラミング・インターフェース (API) に関する文書を参照してください。このインフォメーション・センターでは、「参照」 > 「Mbean インターフェース (Mbean interfaces)」をクリックします。

新規クラスをご使用の MBean のパラメーターとして定義しないでください。 これらのクラスは、すべてのプロセスで使用可能であるとは限りません。 新規クラスを定義する必要がある場合、そのクラスが、デプロイメント・マネージャー、ノード・エージェント、およびアプリケーション・サーバーを含む、すべてのプロセスで使用可能であることを確認します。 クラスがプロセスで使用可能でない場合にアクセスを試みると、 新規プロセスで ClassNotFoundException 例外が発生します。

このタスクについて

以下のタスクを実行し、標準、動的、またはオープン・カスタム MBean を作成および登録します。

手順

  1. 特定の MBean クラスを 1 つまたは複数作成します。
  2. MBean に対して、XML 言語で MBean 記述子を書き込みます。
  3. WebSphere® Application Server ランタイム com.ibm.websphere.management.UserMBeanCollaborator コラボレーター・クラスを使用するコードを、ご使用のアプリケーション・コードに挿入して、MBean を登録します。
  4. MBean インターフェースおよび実装のクラス・ファイル、 記述子 XML ファイル、およびアプリケーション Java archive (JAR) ファイルをパッケージします。

タスクの結果

このステップが正常に完了すると、標準、動的、またはオープンのカスタム MBean が製品管理サービスに登録され、活動化されます。

以下の例は、管理サービスに標準 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 オプションは、分散プラットフォームには適用されませんが、除去する必要はありません。 これらのオプションは、分散プラットフォームでは無視されます。. 一部のステートメントは印刷目的のために複数行に分割されています。

トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): 複数の JVM 環境で実行している場合は、MBean 記述子にタイプ・プロパティーを含める必要があります。gotcha
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();
        }
    }
}

次のタスク

MBean Java ファイルをコンパイルし、結果クラス・ファイルを 記述子 .xml ファイルと共にエンタープライズ Bean JAR ファイルにパッケージします。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_standard_dynamic_mbean
ファイル名:tjmx_standard_dynamic_mbean.html