1. 程式人生 > >使用jreloader實現tomcat中class檔案的熱部署

使用jreloader實現tomcat中class檔案的熱部署

        在平常的專案開發或專案升級中,經常需要重啟TOMCAT,如果是在本地重啟,則會很耗費時間;如果是在生產上的伺服器重啟,不僅耗費時間,而且會影響系統的使用。如果能夠在升級CLASS檔案的時候,不需要重啟TOMCAT,系統自動載入更新的class,實現熱部署,則不僅能夠節省升級時間,還不會影響系統的使用。

       下面將詳細說明使用jreloader在eclipse的TOMCAT和LINUX TOMCAT中實現CLASS檔案熱部署的詳細過程。

1.   下載jreloader

jreloader-0.4.zip

2.   eclipse的TOMCAT中實現熱部署

2.1 配置TOMCAT引數




注意:

javaagent這個引數配的是jreloader.jar這個檔案的本地地址

jreloader.dirs這個引數配的是ECLIPSE中TOMCAT的部署地址

-noverify -javaagent:E:\workspace\tomcatHotDeploy\WebContent\WEB-INF\lib\jreloader.jar -Djreloader.dirs=E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\tomcatHotDeploy/WEB-INF/classes

2.2  啟動TOMCAT

看啟動日誌


說明jreloader配置成功。

2.3  關閉TOMCAT reload



2.4   啟動TOMCAT

2.5     驗證熱部署

(1) 訪問測試地址

TOMCAT打印出日誌


(2) 修改日誌輸出為login2


可以看出jreloader會去重新載入LoginController這個class檔案,但TOMCAT本身不會重新啟動。

(3)    再次訪問測試地址

發現後臺打印出日誌login2


3.  LINUX的TOMCAT中實現熱部署

3.1  修改指令碼檔案catalina.sh

/local/apache-tomcat-7.0.81/bin/catalina.sh


在cygwin=false上面一行新增JVM引數配置

JAVA_OPTS='-Xms256m -Xmx512m -noverify-javaagent:/local/apache-tomcat-7.0.81/webapps/tomcatHotDeploy/WEB-INF/lib/jreloader.jar-Djreloader.dirs=/local/apache-tomcat-7.0.81/webapps/tomcatHotDeploy/WEB-INF/classes'

注意:javaagent的值是jreloader.jar這個檔案的地址,jreloader.dirs配置的是專案classes檔案地址。

3.2  啟動TOMCAT


打印出jreloader的啟動日誌,說明配置成功

3.3   熱部署驗證

(1) 訪問測試地址

(2)    修改日誌輸出


(3) 再次訪問測試地址

可見jreloader對CLASS檔案LoginController.class進行重新載入,但TOMCAT並沒有重新啟動。


4.專案原始碼下載地址

5.總結

jreloader確實可以實現CLASS檔案的熱部署,但也存在一些缺陷,比如不能實現配置檔案的熱部署,除非載入該配置檔案的CLASS也做了更新。但由於平常配置檔案的改動比較少,JAVA檔案的改動比較頻繁,所以jreloader基本上可以滿足專案開發或升級的熱部署需求。