JMX--Standard MBean
实现自己的MBean interface的class,叫做Standard MBean,它是最简单的类型,最适合静态管理信息。
Standard MBean 的语义规则:
1.非抽象类
2.至少一个public constructor
3.实现自己对应的MBean interface
4. Standard MBean所实现的接口的名字必须符合这个形式<implementing_class>MBean,如果MBean的名字是Library,那么他的接口名必须为LibraryMBean

下面创建一个Standard MBean,然后运行它。
MBean 接口:HelloWorldMBean
MBean 实现类:HelloWorld
Agent:HelloAgent


public interface HelloWorldMBean {
    public void setGreeting( String greeting );
    public String getGreeting();
    public void printGreeting();
}



HelloWorldMBean interface声明了一个getter 和 setter,还有一个printGreeting,下面会用到这个方法来打印问候信息。


public class HelloWorld implements HelloWorldMBean{

  private String greeting = null;
  public HelloWorld()
  {
    this.greeting = "Hello World! I am a Standard MBean";
  }
  public HelloWorld( String greeting )
  {
    this.greeting = greeting;
  }
  public void setGreeting( String greeting )
  {
    this.greeting = greeting;
  }
  public String getGreeting()
  {
    return greeting;
  }
  public void printGreeting()
  {
    System.out.println( greeting );
  }
}



现在已经建好第一个Standard MBean,为了验证它我们需要建立一个JMX agent。
HelloAgent需要完成3个重要任务:
1.创建一个MBeanServer实例来包含MBeans
2.创建一个HTML Adapter来处理HTML客户的链接
3.注册HelloWorld MBean


public class HelloAgent {

private MBeanServer mbs = null;
public HelloAgent()
{
  mbs = MBeanServerFactory.createMBeanServer(
"HelloAgent" );
  HtmlAdaptorServer adapter = new HtmlAdaptorServer();
  HelloWorld hw = new HelloWorld();
  ObjectName adapterName = null;
  ObjectName helloWorldName = null;
  try{
    helloWorldName =
new ObjectName(
"HelloAgent:name=helloWorld1" );
    mbs.registerMBean( hw, helloWorldName );

    adapterName =
      new objectName(
"HelloAgent:name=htmladapter,port=9092" );
    adapter.setPort( 9092 );
    mbs.registerMBean( adapter, adapterName );
    adapter.start();
  }catch(Exception e){
    e.printStackTrace();
  }
}
public static void main( String args[] )
{
   System.out.println(
"HelloAgent is running" );
  HelloAgent agent = new HelloAgent();
}

}



constructor中首先创建了MBeanServer,MBeanServer是用于包含和操作MBeans的对象,是JMX agents的核心,createMBeanServer的参数“HelloAgent”是这个agent域的名字,一个domain name是一组MBeans的唯一标识,把这个MBeanServer与其他的作出区别。domain name也可以使你用一种有意义的方式组织你的MBeans。
注册一个MBean时你需要以后能够辨认出它,这就需要ObjectName,ObjectName包括2个部分:
1.A domain name
2.A key=value property list
name/value
对用于区别其他mbean,和提供关于MBean的信息,如名字,端口。
这个例子中,ObjectName为“HelloAgent:name=helloWorld1”

运行HelloAgent,可以看到控制台输出:HelloAgent is running,打开浏览器,输入地址:http://localhost:9092,
在控制台中就可以对所注册的MBean进行管理。
irini   2007-01-27 20:29:43 评论:0   阅读:292   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2008 powered by YuLog