druid 源码阅读 9—— init 中的 JMX 是干啥的
在阅读 8 的时候,有这么一个地方没懂,今天花点时间把这块了解下。
13、registerMbean 注册 druid 的 Mbean,所以 JMX 可以用来监控 Druid 连接池了。//这块没看懂,有空的时候看一下吧。
首先 mbean 是什么东西呢?
原文链接:https://blog.csdn.net/u010833547/article/details/92806510
# 什么是 MBean
- MBean 就是一种规范的 JavaBean,通过集成和实现一套标准的 Bean 接口,这种叫 MBean,Mbean 注册到 MBeanServer 中。之后将被 MBeanServer 中注册过的 Adapter(比如渲染为 HTML 的 HtmlAdapter)渲染为直观的页面将 MBean 的属性和方法展示给用户。
MBean -> MBeanServer -> HtmlAdapter
以上这套架构有一个专业的名词描述:JMX,全称为 Java Management Extensions
- 当然用户需要访问 HtmlAdapter 页面还需要提供一个链接入口,通常都是提供 rmi 入口。
- rmi 的核心是一个 java.rmi.registry.Registry 注册中心,需要暴露给客户端的自定义 RMI 服务接口会提前注册到这个 Registry 中,并声明好访问的链接,之后用户访问【自定义 RMI 服务接口】时就会链接到 Registry 并访问到和链接对应的【自定义 RMI 服务接口】。
- MBeanServer 就是我们刚刚提到的【自定义 RMI 服务接口】,
javax.management.remote.JMXConnectorServer 负责将 MBeanServer 与 URL 绑定(url 类似长成这样子:service:jmx:rmi:///jndi/rmi://localhost:1099/helloworld)并注册到 localhost:1099 的 Registry 注册中心。
- MBean 可以用来干嘛?就是可以有一套 JDK 级别的对外的服务接口。比如,你写了一个 JVM 允许状态辅助查询的 Bean,你希望别人下载一个 Jconsole 就可以看到你写的杰作。那你就可以考虑用 MBean 规范来实现。很多垃圾收集器算法 Bean 就这么干的(说的就是这个类 sun.management.MemoryImpl)。
结束语:挺古老的一套机制,但是关键时刻可以帮助我们更好的理解 JVM 的运行状况,这得感谢 JAVA 的动态加载机制。
那我们怎么用呢?
跑一个 Mbean 试试。
运行 druid 的程序,然后 jconsole 一下,就出来了。
评论