在使用eclipse开发web应用的时候,每当你修改了一个Jsp文件或者Java文件后,你将不的不重新部署并启动web服务器,之后刷新页面才能看到修改后的效果,这样将降低我们的开发效率。这里介绍的Jrebel插件可以实现热装载class文件的功能,即我们在eclipse中修改了一个java文件、jsp文件、配置文件之后,将不再需要重新部署然后重启web服务器了,而只需要重新刷新下页面就可以看到修改之后的效果。
这里先分澄清两个概念:热部署和热加载,如下:
热部署:就是容器状态在运行的情况下部署或者重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况。
热加载:就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的。这种模式适合在开发调试过程中使用,免得整个项目加载,也节省了反复项目启动的时间。
另外debug模式都支持热加载很方便使用。——IDEA TOMCAT WEB开发 SSH开发修改类不重启热部署热加载。
下载Jrebel
官方下载地址:http://www.zeroturnaround.com/jrebel/ (目前官方好像已经不提供.zip的压缩版下载了,只提供eclipse的插件版下载)
Jrebel不是一个开源项目,因此你下载之后只能获得30天的试用权限,不过由于国人的过于强大,还是找到了破解版,我们可以直接下载破解版使用
破解版下载地址:http://download.csdn.net/detail/cselmu9/6238613 (5.3 破解版)
破解版下载的是一个jar,将该jar拷贝到某个目录,如:d:/bin/jrebel/jrebel.jar(如果下载下来的jar为 jrebel-x.x.jar,需要重命名为 jrebel.jar)
配置你的IDE
以eclipse为例,eclipse中找到tomcat 运行环境的配置项
Window– Preferences – Tomcat – JVM Settings
在 Append to JVM Parameters 中加入
-noverify -javaagent:D:/BIN/jrebel/jrebel.jar
-Drebel.dirs=D:\workspace\prs-framework\prs-framework-integration-test\target\classes
-Drebel.spring_plugin=true
-Drebel.struts2-plugin=true
注:
第一段(-noverify -javaagent:D:/BIN/jrebel/jrebel.jar)一定要加
第二段用于指定需要监视的目录,myeclipse中该值为:开发项目路径\WebRoot\WEB-INF\classes,在eclipse中测试这个基本可以不用加
第四段用于开启 struts2 的支持,根据项目框架决定是否需要加 (注意中间的是 - 不是 _ 不要自作主张哟,亲)
另:需要将你的 tomcat server.xml 中的 reloadable="false" 设置成 false
如果是maven项目,可以在pom.xml中加入jrebel插件支持,这样该插件可以自动帮你指定需要监视的目录,配置如下:
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>javarebel-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
重启eclipse后启动tomcat测试,见证神奇吧!!!