JMX中的描述说明

JMX中的描述说明

在开发工作中,会时常遇到通过JMX对应用进行监控、管理,此时JMX MBean自身的描述信息就很重要了 (否则Swagger UI也不会那么火。。。)。但是,在实际应用中,我们会发现自己写的MBean是没有意义的,都是默认的值,说的不错但是是废话,而别人家的MBean是这样的(以Tomcat为例),是有意义的,能知道这个是干啥的。

感谢Tomcat是开源的,赶紧看看人家怎么实现的吧。。。

通过学习(学习过程会在其他地方说明),结论就是:Tomcat中的使用的MBean是DynamicMBean,而我们开发使用的是StandardMBean,而DynamicMBean是可以通过getMBeanInfo()获得MBeanInfo对象实例,进而获取具体的描述信息的。

那么问题来了,StandardMBean怎么添加描述信息呢?必应一下,发现如果单纯的JDK环境貌似不行啊。。。理由如下:

  • 实际上所有的MBean在向MBean Server注册时最终都会被转化为DynamicMBean,详见com.sun.jmx.mbeanserver.Introspector.makeDynamicMBean(Object)方法

  • StandardMBean、MXBean在转化过程中使用的是它们的接口通过反射获取JMX操作、属性的,这个也完全符合它们的编写要求。

  • 在将StandardMBean、MXBean转化的过程中,他们的MBeanInfo中的描述信息只能使用默认值了:

类型默认值
Informationon the management interface of the MBean
构造方法Public constructor of the Mbean
属性Attribute exposed for management
操作Operation exposed for management

结论

综上所述:

  1. JMX中MBean的描述信息几乎完全来源于MBeanInfo对象实例,此对象实例来源于getMBeanInfo方法。
  2. 虽然所有的MBean在最终注册时都会转化为DynamicMBean,但是StandardMBean以及MXBean只能使用默认的描述说明信息。
  3. 在大量使用JMX的场景推荐直接使用DynamicMBean,参照Tomcat。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值