使用JRebel进行Java Web项目的热部署
来源:互联网 发布:域名备案之后怎么用 编辑:程序博客网 时间:2024/05/16 17:14
在日常的Java开发中,如果我们需要调试一个Java Web项目,就需要先将项目编译之后,打包并放入Web容器中运行。如果对Java代码进行了修改,那么必须重新编译并重启Web容器。在改动频繁、或者需要反复调试的项目中,重新编译和重启的过程就显得特别麻烦。那么Java是否能够像动态语言一样,修改即生效呢?JRebel(http://zeroturnaround.com/software/jrebel/)就是这样的一个解决方案。JRebel是一个收费软件,可以申请14天的试用版。也有个免费的版本myRebelhttps://my.jrebel.com/plans。可以绑定facebook或者twitter账号申请一个Social版本的,有一年的试用期。
原理
JRebel的原理大概是这样:
它使用JDK 1.5新增的JVM参数-javaagent启动。代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也就是在main方法执行之前,执行agent的代码。对javaagnet感兴趣的可以看看这篇官方说明http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html,再此就不展开了。
启动之后,JRebel会监控IDE里项目的目标编译目录和源码目录(这个需要在rebel.xml里配置,以下会讲到),一旦发生改变,就重新装载类并替换。这就达到了动态生效的效果。与动态语言不同的是,它依然是先需要进行编译的,所以如果修改后编译不通过,那么也无法进行替换。
使用
下面以Eclipse和Tomcat为例,介绍如何在使用JRebel。
首先下载Eclipse插件,这里推荐使用离线包http://www.zeroturnaround.com/update-site/update-site.zip。下载完后,使用Eclipse的"Install New Software”,选择Add->Archive,并选择下载好的压缩包,即可安装。(这里介绍一个Eclipse安装的小技巧:如果使用Eclipse安装插件总是会很慢,这里将"Contact all update sites during install to find required software"勾选去掉,则省去了长时间的依赖检查过程。)
安装完后,下载JRebel核心包http://zeroturnaround.com/software/jrebel/download/prev-releases/。下载后解压到一个文件夹,这里以E:\jrebel为例。
同时,打开Eclipse的Preferences,将JRebel的路径配置为E:\jrebel\jreble.jar(替换成你下载的地址)。
在项目中配置JRebel
使用JRebel Eclipse插件之后,在项目中使用JRebel基本是零配置的–在项目中选择JRebel->Add JRebel Nature就可以了。JRebel的核心配置文件是rebel.xml,这在最新版的Eclipse插件里已经可以自动生成,无需配置。如果需要手工配置,可以选择Advanced Properties,Generate XML,然后会生成rebel.xml到src/main/resouces目录下。这里有两个配置项,其中classpath对应编译好的文件的位置,web对应源码的位置,一般不需要更改。
<classpath> <dir name="${rebel.workspace.path}/webapp/target/classes"> </dir></classpath> <web> <link target="/"> <dir name="${rebel.workspace.path}/webapp/src/main/webapp"> </dir> </link></web>
最后,如果使用了Tomcat插件,则双击Server,打开Server Overview,同时在JRebel Integration里勾选"Enable JRebel Agent"即可。
如果单独部署Tomcat,则需要手动生成reble.xml,并且在Tomcat的JVM参数中加上以下参数:
-Drebel.spring_plugin=true 支持spring框架-Drebel.aspectj_plugin=true 支持aspectj-Drebel.struts2_plugin=true 支持strut2-javaagent:E:\jrebel\jrebel.jar 这里自行修改jrebel.jar正确的路径-noverify
至此,配置完成。如果Tomcat启动时提示
则表示配置成功。
性能
后来跟同事进行过一些交流,反应说,JRebel很早就有了,但是老版本使用之后,导致Tomcat启动时间
\#######################################################JRebel xxx (201202291303)(c) Copyright ZeroTurnaround OU, Estonia, Tartu.增加了不止一倍,同时容易崩溃,后来就不用了。但是发展到JRebel5之后,性能和稳定性方面是否有提升?这里我做了一个测试,以一个实际开发的项目为例:类型Tomcat启动时间(ms)jrebel 4.618538jrebel 5.1.221836直接启动14367
仍然是可以接受的。稳定性尚待考证。
- 使用JRebel进行Java Web项目的热部署
- idea 使用jrebel 进行项目远程热部署
- 使用JRebel实现Web项目热部署, 提高开发效率
- 使用jRebel在IntelliJ IDEA 中进行 Java 热部署
- Eclipse+Jrebel实现web项目热部署
- 使用jrebel来实现J2EE项目的热部署
- SpringBoot项目使用JRebel热部署
- SpringBoot | 项目使用JRebel热部署
- 使用maven的tomcat:run进行web项目热部署
- 热部署神器-Jrebel的简单使用
- Intellij IDEA 安装和配置jrebel进行项目的热部署
- IDEA 如何使用JRebel 部署web项目
- tomcat7插件结合jrebel进行热部署的一些探索
- Jrebel 的配置及使用(实现WEB应用的热部署)
- Jrebel 的配置及使用(实现WEB应用的热部署)
- Jrebel 的配置及使用(实现WEB应用的热部署)
- java项目开发时热部署--jrebel+myeclipse配置
- Java IDE安装jrebel插件实现项目热部署
- boost.smart_ptr-智能指针scoped_array
- EL表达式最全面的讲解perfect
- ubuntu 远程桌面
- [Elasticsearch] 部分匹配 (一) - 前缀查询
- win7 删除Windows服务的方法
- 使用JRebel进行Java Web项目的热部署
- boost.smart_ptr-智能指针scoped_ptr
- 对话框控件不同类型成员变量的绑定。
- 多线程学习总结-无锁定算法
- FILE的操作
- boost.smart_ptr-智能指针scoped_ptr
- android roboguice 开发遇到的问题(二)
- 电子商城网站实现鼠标移动出现导航菜单
- 调用html 5接口实现断点上传文件