2011年7月27日水曜日

JMXオブジェクトをつくってみる。その1

大規模Javaプログラムを使う場合、JMXはもう必須といっていいほどものすごく便利な管理ツールです。
日本語の解説が少なすぎて切れそうですが、そんなJMXのさわりを書いてみます。

まずはプログラム
package com.ttProject.jmxtest;
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
public class CuiEntry {
  private MBeanServer mbs;
  public static void main(String[] args) throws Exception {
    new CuiEntry();
  }
  public CuiEntry() throws Exception {
    mbs = ManagementFactory.getPlatformMBeanServer();
    mbs.registerMBean(new Test(), new ObjectName("com.ttProject.jmxtest:name=hoge"));
    System.out.println("start");
    while(true) {
      Thread.sleep(100);
    }
  }
  public interface TestMBean {
    public String getData();
    public String printData();
    public void doOutput();
  }
  public class Test implements TestMBean {
    private String data = "test";
    @Override
    public String getData() {
      return data;
    }
    @Override
    public String printData() {
      return data;
    }
    @Override
    public void doOutput() {
      System.out.println(data);
    }
  }
}
別にクラスをわけてもかまわないのですが、適当な名前のクラスとその名前にMBeanをつけたInterfaceを作成、それをregisterMBeanで登録してやると、JconsoleとかでJMX経由でサーバーの状態を参照したり、特定のプログラムを実行したりできます。

自分のオリジナルのクラスが追加されました。

0 件のコメント:

コメントを投稿