使用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) 访问测试地址
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基本上可以满足项目开发或升级的热部署需求。