基于Spring+JMX+Tomcat实现资源动态管理

基于Spring+JMX+Tomcat实现资源动态管理

JMXJava管理扩展)用于管理资源、设备网络等。远程管理程序可以提供运行态时修改程序的属性或者调用程序的方法。本文基于JMX,结合Spring管理beanTomcat容器装载bean,实现资源的动态管理。

一、JMX

JMX将其要管理的设备装配成MBean,在MBean中暴露需要开放的接口和属性。然后将MBeans注册到MBean server中,有远程管理程序通过不同的协议进行访问。JMX首先加入到Java SE 6版本中,低版本的需要下载sunJMX实现:

<dependency>

<groupId>org.jvnet.opendmkgroupId>

<artifactId>jmxremote_optionalartifactId>

<version>1.0_01-eaversion>

dependency>

Spring提供注解支持JMX,常用的注解有:

注解

说明

作用域

@ManagedResource

将类的所有实例标识为JMX受控资源

Class 类

@ManagedOperation

将方法标识为JMX操作

Method方法

@ManagedAttribute

将getter或者setter标识为部分JMX属性

仅getters和setters方法

@ManagedOperationParameter

定义操作参数说明

Method 方法

工程中通过ServerManager定义接口(MBean),由于spring的支持,该MBean不需要以MBean结尾。ServerManagerImpl实现接口并暴露方法和属性。

 

二、Spring JMX

Spring提供对JMX的支持,具体的标签详见工程中的:JmxTest-context.xml。此外,工程需要提供web.xml,用于Tomcat启动时通过spring加载bean

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>

listener>

 

<context-param>

<param-name>contextConfigLocationparam-name>

<param-value>/WEB-INF/JmxTest-context.xmlparam-value>

context-param>

 

三、Tomcat

Tomcat启动支持JMX需要添加启动参数:

-Dcom.sun.management.jmxremote.port=9999

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

 

四、使用

可以通过JMX API编写客户端程序进行访问,例如JmxTest.java。此外,还可以使用JConsole访问。步骤如下:

1. win+r运行jconsole,选择远程连接并填入ip:port

基于Spring+JMX+Tomcat实现资源动态管理_第1张图片 

2. 选择MBean标签,即可看到暴露的MBean属性和接口。

基于Spring+JMX+Tomcat实现资源动态管理_第2张图片


PS:工程下载地址如下。

http://download.csdn.net/detail/conanswp/9913271

你可能感兴趣的:(JMX)