接下来介绍一下在Tomcat中JMX的运用
1. JMX介绍
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX是一套标准的代理和服务,用户可以在任何Java应用程序中使用这些代理和服务实现管理。
下图为JMX的体系结构
JMX包括四层,即设备层、代理层、分布服务层、附件管理歇息API。
1) 设备层(Instrumentation Level):主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。
2) 代理层(Agent Level):主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。
3) 分布服务层(Distributed Service Level):主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。然而,当前的JMX规范并没有给出这一层的具体规范。
4) 附加管理协议API:定义的API主要用来支持当前已经存在的网络管理协议,如SNMP、TMN、CIM/WBEM等。
JMX定义了四种管理构件:标准(Standard MBeans)、动态(Dynamic MBeans)、开放(Open MBeans)和模型管理构件(Model MBeans)。每一种管理构件可以根据不同的环境需要进行制定。Tomcat使用ModelMBean对资源进行管理。
2. Tomcat基于jmx的管理
Tomcat为了自身的管理,从tomcat4后使用JMX对自身组件(Server、Service、Realm、Engine和Connector等)进行管理。
(1)当我们用Eclipse中载入Tomcat源码,加入以下的虚拟机参数。
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl="false"
-Dcom.sun.management.jmxremote.authenticate="false"
界面如下图所示
(2)可以通过使用JConsole查看一下Tomcat中的所有的MBeans。
打开Jconsole,点击连接,查看Mbean窗口,如下图所示。
从上图可以看出,Tomcat中的MBeans位于Catalina和Users两个domain中,Catalina域名中包含了一些Tomcat核心组件, Server、Service、Realm、Engine和Connector等关键组件,Users中包含了Role、User、UserDatabase等组件。这些组件是随着Tomcat的启动而相继启动的,
接下来会从代码的角度来进行分析。