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
HelloWorldMBean interface声明了一个getter 和 setter,还有一个printGreeting,下面会用到这个方法来打印问候信息。
现在已经建好第一个Standard MBean,为了验证它我们需要建立一个JMX agent。
HelloAgent需要完成3个重要任务:
1.创建一个MBeanServer实例来包含MBeans
2.创建一个HTML Adapter来处理HTML客户的链接
3.注册HelloWorld MBean
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进行管理。
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
