一.热部署的需求:每次代码之后都要重新启动,JRebel插件就可以解决这个问题。
二.热部署介绍
1、热部署与热加载
在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载。
它们之间的区别是:
(1)、部署方式:
热部署在服务器运行时重新部署项目。
热加载在运行时重新加载class。
(2)、实现原理
热部署直接重新加载整个应用,这种方式会释放内存,比热加载更加干净,但是它比热加载更加的浪费时间。
热加载在运行时重新加载class,主要使用的是类加载机制,在实现方式上就是在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳发生变化,则将类重新载入。
(3)、使用场景
热部署更多的是在生产环境中使用,就是适用于频繁的部署并且启动耗时长的应用、无法停止服务的应用等。
热加载则更多的是在开发环境中使用,用于开发,debug中,可以大大的提高开发效率。
2、热加载的应用:
struts2中的热加载应用:
在struts2中热加载即开发者模式,在struts.xml配置
<constant name="struts.devMode" value="true" />
这是开启开发者模式,每次更改代码不需要重启服务器就可以进行调试。
三.在eclipse安装插件JRebel进行热部署
1.eclipse菜单选择Help -> Eclipse Marketplace 打开弹窗,输入JRebel,点击搜索。
2.点击Installed按钮下载安装JRebel插件,后面按照提示一步步操作,到最后会提示是否重启eclipse,
点同意按钮,eclipse重启后,JRebel功能就可以用了。
3.还是点击Help,会发现里面多了JRebel选项,证明JRebel已经安装成功了,这时候还不能用,需要
注册license,提供注册地址:http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce。
4.选择Help -> JRebel -> Activation打开窗口,选择I already have a license选项卡,选中选项
Connect to online licensing service,第一个输入框输入以上注册地址,第二个输入框输入个人
邮箱地址即可,点击下面Change license按钮即可完成注册并关闭窗口。
5.选择Help -> JRebel -> Configuration打开窗口,可以发现默认选项卡Overview里已经有刚才注册的license信息了。在Time Saved Statistics部分可以设置扫描频率。
6.选择Startup选项卡,选中单选框Run via IDE,Servers下在用到的Tomcat服务器左边打勾。
7.选择Projects选项卡,在表格里需要启动的项目后面打勾。
8.点击eclipse工作空间里的项目,可以在resource目录下面发现一个rebel.xml文件,里面是JRebel的配置参数。
四.Maven的tomcat插件配合JRebel的设置步骤
1.在pom.xml中<build></build>标签下的<plugins>标签里添加tomcat插件以及jrebel插件:
<!-- maven的tomcat组件,通过maven命令tomcat7:run运行项目 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/Irritability</path> </configuration> </plugin> <!-- jrebel热部署插件 --> <plugin> <groupId>org.zeroturnaround</groupId> <artifactId>jrebel-maven-plugin</artifactId> <version>1.1.8</version> <executions> <execution> <id>generate-rebel-xml</id> <phase>process-resources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin>
2.在JRebel下启动maven项目步骤
选中项目点击右键-->Run As-->Maven build...:
按照图中步骤设置后点击Run按钮运行项目:
如下图所示,说明启动成功
四.按照上面可能出现的错误
1.如下错误,找不到Jar包的绝对路径
解决:打开JRebel Configuration,选中Advanced,然后在JRebel Agent下选择Other jrebel.jar,导入jar包的路径(即下载时的位置,如果通过上述方法下载的,那么jar包在eclipse下),如图所示:
2.出现Exception in thread ""http-bio-80"exec-1" java.lang.OutOfMemoryError: PermGen s的异常(内存溢出)。
内存溢出解决方法是扩大设置的内存,步骤如下:
Windows-->Preferences-->Java-->Installed JREs右侧-->Edit...
在 Default VM arguments中写入
-Xms512M -Xmx1024M -XX:PermSize=256m -XX:MaxPermSize=768m
,随后重启项目即可正常使用JRebel热部署项目了。
五.官网链接