JMX MBeans之一Standard MBean

本文介绍如何使用Java Management Extensions (JMX) 中的StandardMBean来管理资源。通过实现特定接口,开发者可以轻松地将自定义业务逻辑暴露给MBean Server。文章详细展示了从创建MBean接口到实现类,再到注册MBean Server并启动适配器的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JMX MBeans之一Standard MBean
这种类型的MBean最简单,它能管理的资源(包括属性,方法,时间)必须定义在接口中,然后MBean必须实现这个接口。而且这个MBean实现类中,必须至少有一个public的构造函数。
而且类中的getter和setter函数必须遵守命名标准。
类的命名也必须遵循一定的规范,例如我们的MBean为Hello,则接口必须为HelloMBean,而且是大小写敏感的。如果不这么做,可能会有javax.management.NotCompliantMBeanException抛出。
接口为:

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

MBean的类实现它:

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 );
}
}

下面编写agent
1: 创建 MBeanServer
2:创建一个adapter
3:将MBean注册到MBeanServer,同时将adapter也注册到MBeanServer
4: 启动adapter

import javax.management.*;
import com.sun.jdmk.comm.*;
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();
}
}

上面的代码使用了sun的一个adapter:HtmlAdaptorServer,位于com.sun.jdmk.comm包中,
使得html客户端可以管理MBean server。
注意ObjectName类,这个class为MBean提供命名系统,为注册在MBean server中的每个MBean提供唯一的标识。它的书写规则是这样的:"A Domain name:key=value,key2=value2",每个名字包括两个部分:
A Domain name--这个名字通常是这个MBean所要注册的MBeanServer的domain name.如果不是的话,往往都是为了将之与其它的MBeans分开所致.
key=value--属性名称/值对,用来唯一的标识一个MBean,经常也用来提供Mbean的信息,常用的有name,port值,location,purpose等等。
因为createMBeanServer方法中我们使用了参数"HelloAgent",因此后面的Domain names必须为HelloAgent。
运行将jmx的包放到classpath中,运行HelloAgent类,然后通过浏览器访问http://localhost:9092即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值