使用jreloader实现tomcat中class文件的热部署

来源:互联网 发布:50而知天命什么意思 编辑:程序博客网 时间:2024/06/08 18:16

        在平常的项目开发或项目升级中,经常需要重启TOMCAT,如果是在本地重启,则会很耗费时间;如果是在生产上的服务器重启,不仅耗费时间,而且会影响系统的使用。如果能够在升级CLASS文件的时候,不需要重启TOMCAT,系统自动加载更新的class,实现热部署,则不仅能够节省升级时间,还不会影响系统的使用。

       下面将详细说明使用jreloader在eclipse的TOMCAT和LINUX TOMCAT中实现CLASS文件热部署的详细过程。

1.   下载jreloader

jreloader-0.4.zip

http://dl.download.csdn.net/down10/20120415/a17ac4276a1beaa352d3769b421149f2.zip?response-content-disposition=attachment%3Bfilename%3D%22jreloader-0.4.zip%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1506919581&Signature=gmiKmmGj4GFC0aqyE8NZrqfZaQM%3D&user=brushli&sourceid=4227081

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) 访问测试地址

http://localhost:8080/tomcatHotDeploy/loginController/login.do

TOMCAT打印出日志


(2) 修改日志输出为login2


可以看出jreloader会去重新加载LoginController这个class文件,但TOMCAT本身不会重新启动。

(3)    再次访问测试地址

http://localhost:8080/tomcatHotDeploy/loginController/login.do

发现后台打印出日志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) 访问测试地址

http://192.168.1.107:8080/tomcatHotDeploy/loginController/login.do

(2)    修改日志输出


(3) 再次访问测试地址

http://192.168.1.107:8080/tomcatHotDeploy/loginController/login.do

可见jreloader对CLASS文件LoginController.class进行重新加载,但TOMCAT并没有重新启动。


4.项目源码下载地址

http://download.csdn.net/download/brushli/10006177

5.总结

jreloader确实可以实现CLASS文件的热部署,但也存在一些缺陷,比如不能实现配置文件的热部署,除非加载该配置文件的CLASS也做了更新。但由于平常配置文件的改动比较少,JAVA文件的改动比较频繁,所以jreloader基本上可以满足项目开发或升级的热部署需求。