JMX(一)-------MBean server

JMX(JAVA Management Extensions)技术是java5的新特性,它提供一种简单,标准的方式去管理应用程序,设备,服务等资源。
1什么是JMX
    JMS定义了一些设计模式,api和一些服务来进行应用程序和网络的监控,这些都是基于java语言环境的。
使用JMS技术,资源被一种叫做MBeans(Managed Beans)监控,这些MBean都在一个核心对象管理server上注册。叫做MBean server.
2.为什么要使用JMS
JMS给java开发者提供了自由的方式去监控java代码,创建智能java agents,实现分布式管理的中间件和管理者,并且能够快速整合这些方案到的管理和监控系统。
通过一个简单的例子来创建一个JMX agent来管理MBean。

首先创建一个MBean接口:

 

public interface HelloMBean {
    public void sayHello();
    public int add(int x,int y);
    public String getName();
    public void setCacheSize(int size);
    public int getCacheSize();
}
根据JMX描述,MBean接口包括一些可读或者可写的属性,还有一些定义好的方法,这些方法能够被MBean管理应用程序调用。

 

实现类,类名必须为接口sufixMBean的前缀。也就是Hello。如果不按这个命名注册MBean就会有问题。

 

public class Hello implements HelloMBean {
    //可读属性 不可写
    private final String name = "gittudou";
    private int  DEFUALT_CACHE_SIZE = 200;
    //可读写属性
    private int cacheSize = DEFUALT_CACHE_SIZE;

    public void sayHello() {
        System.out.print("hello jmx");
    }

    public int add(int x, int y) {
        return x+y;
    }

    public String getName() {
        return this.name;
    }
    //使用synchronized 同步控制 防止多个线程同时调用set方法
    public synchronized void setCacheSize(int size) {
       this.cacheSize = size;
        System.out.println("Cache size now "+this.cacheSize);
    }
    public int getCacheSize() {
        return this.cacheSize;
    }
}
 现在一个简单的MBean类写好了。然后需要再MBean server上注册

 

 

public class Main {
    public static  void  main(String args[]) throws  Exception{
        //获取MBeanServer  如果没有MBean server存在那么下面会自动调用ManagementFactory.createMBeanServer()
        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        //包名加 类名 创建一个ObjectName
        ObjectName name = new ObjectName("git.tudou.manage.jmx.test.essential:type=Hello");
        //创建一个Hello实例
        Hello mbean = new Hello();
        //在MBean server上注册MBean
        mBeanServer.registerMBean(mbean,name);
        System.out.println("Waiting forever...");
        //线程等待 management 操作 
        Thread.sleep(Long.MAX_VALUE);
    }
}
 执行这个main方法,接下来我们可以通过JDK提供的一个jconsole去连接这个本地进程。打开MBean,点击Hello

 这是一个简单的MBean,使用jconsole去连接,当然也可以使用RMI进行远程连接MBean server,来进行管理和执行操作。在我的代码中还有几种类型的MBean,比如MXBean,加入notification的MXBean,这里没有提到如何自己连接MBean server,接下来用自己实现的代码连接MBean server.
代码附件
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值