jmx学习示例

1.jmx是什么

JMX是Java Management Extensioins的缩写,功能是对java程序的管理。不太好理解,下面给出一个例子来说明。

2.实例

package swim;

public interface UserMBean {

    public void changeName(String name);

    public void printName();
}
package swim;

public class User implements UserMBean {

    public String name = "default";

    @Override
    public void changeName(String name) {

        this.name = name;
    }

    @Override
    public void printName() {

        System.out.println(this.name);
    }
}
package swim;

import java.lang.management.ManagementFactory;

import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.ReflectionException;

public class jmx1_1 {


        public static void main(String args[]) {

                MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
                try {
                        ObjectName name = new ObjectName("swim:type=User");
                        User uBean = new User();
                        mbs.registerMBean(uBean, name);

                        while(true){

                                System.out.println(mbs.invoke(name, "printName", null, null));
                                Thread.sleep(5000);
                        }

                } catch (MalformedObjectNameException e) {
                        e.printStackTrace();
                } catch (InstanceAlreadyExistsException e) {
                        e.printStackTrace();
                } catch (MBeanRegistrationException e) {
                        e.printStackTrace();
                } catch (NotCompliantMBeanException e) {
                        e.printStackTrace();
                } catch (InstanceNotFoundException e) {
                        e.printStackTrace();
                } catch (ReflectionException e) {
                        e.printStackTrace();
                } catch (MBeanException e) {
                        e.printStackTrace();
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
        }
}

可以看到对User的操作可以通过MBeanServer 来控制,这个就很强大了啦。进一步来说还可以这样。运行Jconsole命令。

这里写图片描述

点击printName,可以执行程序中的printName函数。试试changeName,可以看到值也变了。是不是厉害了。

这里写图片描述

3.概念上的东西

一个MBean代表一个被管理对象。这个对象需要暴露一些供读写的属性,以及可以调用的方法。JMX平台定义了4种MBean,标准、动态、开放、模型。上面的实例是标准型的MBean,这里给出一个入门级的了解,至于其它类型的MBean,请参看http://blog.csdn.net/u013256816/article/details/52800742(从零开始玩转JMX系列)

本文是在zookeeper代码阅读中看到的关于JMX部分代码后,不了解其意义然后了解而形成的文章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值