使用 Jrebel 插件实现热加载

来源:互联网 发布:网络机顶盒电视猫 编辑:程序博客网 时间:2024/06/05 01:53

在使用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测试,见证神奇吧!!!

0 0