Jmx 学习

jmx全称是Java Management Extensions 是java的一种扩展管理工具,可以通过网页或者客户端的方式管理正在运行的java服务,例如Tomcat的容器停止或者重启。Tomcat基于jmx开发的,Jboss也是类似的,数据库连接池druid也有同样的功能。拥有jmx意味着可以通过在页面上动态调整服务。如下图jmx架构图

image.png

由上面的图片可以看出mbean分为三层,分别是基础层、代理层,远程管理层

  • 基础层mbean,分为了标准Mbean、动态Mbean、mxbean等
  • 代理层(适配层)提供对mbean的管理
  • 远程管理层 可以通过http、snmp、rmi等不同的协议去管理具体的mbean资源

StandardMBean

使用StandardMBean 必须为每一个MBean定义一个接口,而且名字限定为xxxMBean

// 接口
public interface DemoMBean {

    public String getName();
    public int getAge();
    public void setName(String name);
    public void setAge(int age);
    void init();
}

// 具体实现
public class Demo implements DemoMBean {

    private String name;
    private int age;

    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getAge() {
        return age;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public void init() {
        this.age = 10;
        this.name = "hehehehehe";
    }
}

// agent
public class DemoAgent {

    public static void main(String[] args)  {
        try {
            MBeanServer server = ManagementFactory.getPlatformMBeanServer();
            String domainName = "DemoMBean";
            // 为MBean(下面的new Hello())创建ObjectName实例
            ObjectName demo = new ObjectName(domainName + ":name=Demo");

            // 将demo对象注册到MBeanServer上去
            server.registerMBean(new Demo(), demo);

            Thread.sleep(60*60*1000);
            // demo而已,便于测试,加上了这个线程睡眠

        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

image.png

// 系统默认的赋值


image.png

// 触发init方法


image.png

// 触发init函数,运行完值已经发生变化了


image.png

这样我们就可以在本地通过jconsole动态修改了服务内的数据,在实际发开中,存在修改线上配置文件的属性,除了重新部署修改之外,也可以通过类似的方案实现。

除了本地jconsole工具管理mbean,还可以通过rmi、http等方式管理,原理也类似,遵循jmx的使用协议,在原本写好的agent上再包装一层提供给外界使用。

参考链接

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 全称Java Management Extensions,从Java5.0开始引入到标准Java技术平台中。...
    0d1b415a365b阅读 6,450评论 0 4
  • JMX全称Java Management Extensions, 为Java应用提供管理扩展功能。在Java 5的...
    azzgo阅读 19,115评论 5 14
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,107评论 6 342
  • 转自陈明乾的博客,可能有一定更新。 转原文声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
    C86guli阅读 10,166评论 6 72
  • 传说,在耶稣复活之日,正值斯堪的纳维亚地区居民,庆祝大地回春的“春太阳节”。兔子作为爱神阿弗洛狄特的宠物,日...
    一万个小时阅读 4,434评论 0 0