標準、動的、およびオープン・カスタム MBean を作成し、これらを WebSphere Application Server 管理サービスに登録することができます。
新規クラスをご使用の MBean のパラメーターとして定義しないでください。 これらのクラスは、すべてのプロセスで使用可能であるとは限りません。 新規クラスを定義する必要がある場合、そのクラスが、デプロイメント・マネージャー、 ノード・エージェント、およびアプリケーション・サーバーを含む、すべての プロセスで使用可能であることを確認します。 クラスがプロセスで使用可能でない場合にアクセスを試みると、 新規プロセスで ClassNotFoundException 例外が発生します。
以下のタスクを実行し、標準、動的、またはオープン・カスタム MBean を作成および登録します。
以下の例は、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(); } } }