作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
四年之前,正在做大型邮件系统的项目,主要负责基础组件的开发和维护,如:线程池、连接池、基于TCP自实现的HTTP长连接。当时,想实时了解生产环境中各个组件的内部运行状态和定时获取状态数据生成报表,从而分析和掌控系统的健康状况趋势,就利用JMX实现了该功能。
从公司离职后,利用空闲时间自己写一些东西,想到了一种更高效的实现JMX服务的方法,几行代码就可以搞定一个JMX服务,也就是现在的jmx-util。
功能
- 封装普通的Java对象,使之成为符合JMX规范的MBean。
- 根据指定的接口,暴露方法和属性。
- 可自定义过滤器,过滤指定的方法和属性。
类关系图
- IntrospectionMBean。实现了javax.management.DynamicMBean,负责将普通Java对象封装成MBean,它会调用IntrospectionFilter的实现类,过滤属性和方法。
- IntrospectionFilter。过滤器接口定义,默认实现类有AbstractFilter、AttributeFilter、MethodFilter。可根据自已的需要继承AbstracFilter类或IntrospectionFilter接口实现属性和方法过滤器。
- Description。描述注解,可应用于类和方法。
使用说明
1、将jmx-util-1.0.0.jar加入项目的classpath。
2、编写一个POJO类。源代码
3、编写注册MBean对象的代码。完整的源代码
|
|
|
|
|
|
4、运行HelloJmx。
5、打开JConsole,选择HelloJmx的进程。
6、点击连接按钮,选择MBean选项卡。
下载
binary
source