Druid JMX 远程监控异常处理
通过获取JMX远程监控web应用异常
get jmx data error
javax.management.InstanceNotFoundException:com.alibaba.druid:type=DruidStatService
主要原因是在于配置DataSource com.alibaba.druid.pool.DruidDataSource 时缺少name属性。官方并没有说明jmx链接的注意事项,翻阅源码才发现有这样一段逻辑判断。只要是没有设定name时是不会注册MBean的。
源代码分析如下:
解决方法:
所以解决方法是在配置DataSource时设定name属性。据官方文档介绍配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”DataSource-” + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。详情-点此处。
DruidDataSource官方配置属性列表