WebSphere Application Server - Express for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

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

標準、動的、およびオープン・カスタム MBean を作成し、これらを WebSphere Application Server 管理サービスに登録することができます。

始める前に

このタスクでは、MBean プログラミングに関する基本的な知識があることが前提になっています。MBean プログラミングについては、MBean Java アプリケーション・プログラミング・インターフェース (API) 資料を参照してください。

新規クラスをご使用の 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 が WebSphere Application Server 管理サービスに登録され、活動化されます。

以下の例は、WebSphere Application Server 管理サービスに標準 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 が Enterprise Bean で使用されると想定します。 MBean を Enterprise 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 desciptor: The MBean descriptor file name


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 ファイルと共に Enterprise Bean JAR ファイルにパッケージします。



関連タスク
Standard、Dynamic、および Open Mbean のベスト・プラクティス
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:05:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/tjmx_standard_dynamic_mbean.html