辛星简析jmx第一篇:标准管理构件

本文介绍了Java Management Extensions (JMX) 中的核心概念,特别是标准管理构件(Standard MBean)。JMX是一种用于植入管理功能的框架,文章详细讲解了MBean的四种类型,并重点讨论了标准管理构件的特性,包括命名规则和实现步骤。通过示例展示了如何定义和注册Standard MBean,并使用jconsole进行管理操作。
摘要由CSDN通过智能技术生成

jmx即java management extensions,即"java管理扩展",它是一个为应用程序植入管理功能的框架。

这里我们首先来介绍几个核心概念:

1.设备层(instrumentation level)

设备层定义了信息模型,也就是jmx中的各种管理对象。需要管理的时候,信息模型需要向MBean服务器进行注册。

jmx中的各种管理对象,即jmx的管理构件,即managed bean,即mbean。

在jmx中定义了四种管理构件,即四种mbean:

(1)标准管理构件。它是通过内省实现的,因此它对命名规则有比较强的要求。

(2)动态管理构件。它不需要通过内省机制来确定动态管理构件的管理接口,而且有较强的灵活性。

(3)开放管理构件。它是一种专门化的动态管理构件,我们可以通过OpenMBeanInfo对象来获取开放管理构件的管理接口。

(4)模型管理构件。它是内置的、通用的、动态的mbean,它已经包含了必要行为的默认实现,它也允许我们重新给出实现。如果我们想定义自己的模型管理构件,我们就需要实现javax.management.modelmbean.RequiredModelMBean。

jmx在网络服务器上应用比较广泛,我们所熟知的tomcat、jetty都对jmx提供了一定的支持。


本节我们先来介绍标准管理构件,即Standard MBean,我们要实现类似的功能,一般需要做三件事:首先定义MBean接口,然后定义MBean接口的类,最后把它们注册到MBeanServer中进行管理。


我们首先来来定义一个标准管理构件,它的接口名必须以MBean结尾。

public interface UserMBean {
    String getName();

    void setName(String name);

    Integer getAge();

    void setAge(Integer age);

    void info();
}

然后我们创建一个实现该接口的具体的类,代码内容如下所示:

public class User implements UserMBean{

    private String name;

    private Integer age;

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

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

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

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

    @Override
    public void info() {
        System.out.println("名称: " + name + " 年龄:" + age);
    }
}

然后我们创建一个代理,我们把我们的MBean注册到其中,我们代码内容如下所示:

import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;

public class BaseAgent {
    public static void main(String[] args) throws Exception{
        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        ObjectName userObject = new ObjectName("jmxBean:name=hello");
        server.registerMBean(new User(), userObject);

        // 用于不让程序快速退出
        char c = (char)System.in.read();
        System.out.println("字符是:" + c);
    }
}

然后我们运行程序,然后在命令行执行jconsole,我们可以看到我们的MBean被注册进来了,如下所示:



然后我们可以修改属性内容(我们可以双击属性对应的值对应的单元格,然后我们就可以填充对应的值了):


我们还可以调用它对应的操作,我们对应如下所示:



对于jmx的标准管理构件,我们就介绍到这里了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值