1. 程式人生 > >基於Spring+JMX+Tomcat實現資源動態管理

基於Spring+JMX+Tomcat實現資源動態管理

基於Spring+JMX+Tomcat實現資源動態管理

JMXJava管理擴充套件)用於管理資源、裝置網路等。遠端管理程式可以提供執行態時修改程式的屬性或者呼叫程式的方法。本文基於JMX,結合Spring管理beanTomcat容器裝載bean,實現資源的動態管理。

一、JMX

JMX將其要管理的裝置裝配成MBean,在MBean中暴露需要開放的介面和屬性。然後將MBeans註冊到MBean server中,有遠端管理程式通過不同的協議進行訪問。JMX首先加入到Java SE 6版本中,低版本的需要下載sunJMX實現:

<!-- https://mvnrepository.com/artifact/org.jvnet.opendmk/jmxremote_optional -->

<dependency>

<groupId>org.jvnet.opendmk</groupId>

<artifactId>jmxremote_optional</artifactId>

<version>1.0_01-ea</version>

</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.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/JmxTest-context.xml</param-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

 

2. 選擇MBean標籤,即可看到暴露的MBean屬性和介面。


PS:工程下載地址如下。

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