Tomcat7 + JRebel6.3.0 + IntelliJ idea 热部署配置过程+错误分析
以前使用Tomcat的时候直接就可以热部署,现在换了一个使用Spring框架的项目突然就不能热部署了。
网上说在tomcat里conf/context.xml中加入
<Context antiJARLocking="true" antiResourceLocking="true" >
就可以实现热部署,但修改后依然不行。
倒腾了半天听说可以使用JRebel可以实现功能,于是在IntelliJ的插件里找来。
按照网上的教程配置好之后,我找到web项目部署的位置xx\itaxPlatform\out\artifacts\itaxPlatform_Web_exploded,我发现里面的文件更新日期是随着每次我改动代码而变化的,这说明IntelliJ部署的web项目是被更新的。
奇怪的是运行起来却发现代码并没有更新。
莫非此刻在Tomcat服务器中运行的Java代码并不是IntelliJ部署的web项目代码?
我想一定是另有一份代码在我所不知道的角落悄悄运行着。
我在打印出的日志中找到这么一句
JRebel: Monitoring Log4j configuration in 'file:/D:/software/apache-tomcat-7.0.64-windows-x64/apache-tomcat-7.0.64/temp/0-admin/WEB-INF/classes/log4j.properties'.
我意识到Tomcat也许运行了一个temp的项目。
再上网找,有网友也遇到类似问题,把antiJARLocking="true" antiResourceLocking="true" 去掉就好,因为这会让Tomcat复制一份文件到temp文件夹中。
原来是这样。
去掉之后,JRebel贴心地弹了一个提示框告诉你,第一次热部署成功。