基於Spring+JMX+Tomcat實現資源動態管理
基於Spring+JMX+Tomcat實現資源動態管理
JMX(Java管理擴充套件)用於管理資源、裝置網路等。遠端管理程式可以提供執行態時修改程式的屬性或者呼叫程式的方法。本文基於JMX,結合Spring管理bean,Tomcat容器裝載bean,實現資源的動態管理。
一、JMX
JMX將其要管理的裝置裝配成MBean,在MBean中暴露需要開放的介面和屬性。然後將MBeans註冊到MBean server中,有遠端管理程式通過不同的協議進行訪問。JMX首先加入到Java SE 6版本中,低版本的需要下載sun的JMX實現:
<!-- 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
<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