`
KuangYeYaZi
  • 浏览: 55780 次
文章分类
社区版块
存档分类
最新评论

使用JRebel进行Java Web项目的热部署

阅读更多

在日常的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 xxx (201202291303)
(c) Copyright ZeroTurnaround OU, Estonia, Tartu.

 则表示配置成功

性能

后来跟同事进行过一些交流,反应说,JRebel很早就有了,但是老版本使用之后,导致Tomcat启动时间增加了不止一倍,同时容易崩溃,后来就不用了。但是发展到JRebel5之后,性能和稳定性方面是否有提升?这里我做了一个测试,以一个实际开发的项目为例:

类型 Tomcat启动时间(ms)
jrebel 4.6 18538
jrebel 5.1.2 21836
直接启动 14367

仍然是可以接受的。稳定性尚待考证。

 

来源于:http://my.oschina.net/flashsword/blog/100541

  • 大小: 96.5 KB
  • 大小: 110.9 KB
  • 大小: 64.5 KB
分享到:
评论

相关推荐

    Jrebel 基于TOMCAT实现项目修改热部署

    下面将详细介绍 JRebel 如何与 Tomcat 集成,实现项目修改后的热部署。 **1. JRebel 的工作原理** JRebel 是通过动态类加载技术,实现在运行时替换已经加载的类,以达到热部署的效果。它拦截了 JVM 的类加载过程,...

    jrebel使用,web工程可以热部署

    《JRebel 使用详解:实现Web工程的热部署》 在软件开发过程中,尤其是在Java领域,经常需要频繁地测试和调试代码,而每次修改代码后都需要重新编译、打包、部署,这一过程既耗时又降低了开发效率。为了解决这个问题...

    ecilipse+tomcat+jrebel实现热部署

    Eclipse、Tomcat 和 JRebel 是三个常用的开发工具,其中 Eclipse 是一个集成开发环境(IDE),Tomcat 是一个 Web 服务器,而 JRebel 是一个热部署工具。热部署是指在不重新编译和部署项目的情况下,实时更新项目的...

    IntelliJ+Maven+Jetty+Jrebel实现web项目java代码更改后热部署

    "IntelliJ+Maven+Jetty+Jrebel"的组合正是为了解决这一问题,实现Web项目的Java代码更改后能够自动热部署。这个解决方案集成了几个关键工具,包括: 1. **IntelliJ IDEA**: 这是一款强大的Java集成开发环境(IDE)...

    myeclipse 插件热部署 jrebel6.5

    myeclipse 插件热部署 jrebel6.5 亲测可用,资源下载到磁盘,然后打开myeclipse 路径为:Windows ---&gt; Perferences --&gt; MyEclipse --&gt;Servers --&gt;Tomcat --&gt; Tomcat 7.x --&gt;JDK 配置jvm参数: -...

    jrebel热部署工具-eclipse

    标题中的"JRebel热部署工具-eclipse"指的就是将JRebel这个神器与Eclipse集成,以提升Java Web开发的效率。Eclipse作为广泛使用的Java集成开发环境(IDE),在开发者社区中拥有极高的声誉。然而,Eclipse默认的机制...

    myeclipse热部署jrebel6.5.0

    Drebel.dirs-------------热部署的项目 -Drebel.spring_plugin-----热部署spring相关jar -Drebel.struts2-plugin-----热部署struts2相关jar -Drebel.hibernate_plugin---热部署hibernate相关jar -Drebel.ibatis-...

    eclipse修改代码后热部署(不需要重启服务

    下面是使用JRebel进行热部署的步骤: 1. **安装JRebel插件**:访问JRebel官网下载并安装适合Eclipse版本的JRebel插件。通常,你可以通过Eclipse的“帮助”&gt;“安装新软件”菜单,然后输入JRebel的更新站点地址进行...

    IDEA与Eclipse的JRebel插件

    JRebel是一款强大的热部署工具,尤其在Java Web开发中,它能够显著减少因代码修改而频繁重启应用服务器所浪费的时间。 ### IDEA与Eclipse中的JRebel插件 **JRebel简介** JRebel由Zeroturnaround公司开发,它的核心...

    JRebel MAC IDEA热加载

    JRebel是由Zeroturnaround公司开发的一款Java应用热部署工具。它通过动态地将类加载到已运行的应用服务器中,实现了对代码更改的即时反映。这意味着开发者可以在不重启应用的情况下看到代码的更新,从而减少了等待和...

    Tomcat热加载Jrebel

    【描述】:Tomcat热加载Jrebel是通过Jrebel插件与Tomcat服务器的集成,实现Java应用的热部署。这意味着开发者在编码过程中可以实时看到代码更改的效果,无需每次都停止、重新启动服务器,极大地提高了开发迭代的速度...

    Maven项目中的热部署

    在IT行业中,Maven是一个广泛使用的构建自动化工具,主要用于Java项目的管理。它简化了构建过程,依赖管理和项目信息管理,使得开发团队能够更高效地工作。"Maven项目中的热部署"这一主题聚焦于如何在Maven管理的...

    Tomcat热部署,让你轻松部署

    - **Tomcat自身的热部署**:Tomcat内置了基本的热部署功能,当检测到`WEB-INF/classes`或`WEB-INF/lib`目录下的更改时,会自动重新加载应用,但这个功能对于Java类的更新并不完全有效,通常只适用于静态资源和配置...

    jboss热部署配置

    可以尝试在`jboss-app.xml`文件中将`loader-repository`设置为`jboss.web.deployment:loader-repository-class=org.jboss.web.tomcat.service.loader.HotDeployClassLoaderRepository`,以使用JBoss的热部署类加载器...

    IntelliJ IDE热部署最新插件

    IntelliJ IDEA是一款广受欢迎的Java集成开发环境(IDE),以其高效、智能的代码补全...对于使用IntelliJ IDEA进行Java开发的团队来说,了解和掌握如何有效地利用热部署插件,对于优化工作流程和提升开发速度至关重要。

    maven-eclipse-tomcat热部署

    为了进一步提高性能,可以考虑使用像JRebel这样的工具,它能够实现真正的热部署,无需重启服务器即可看到代码更改的效果。 通过以上步骤,你可以实现Maven、Eclipse和Tomcat的无缝集成,从而高效地进行Web应用的...

    idea热部署方法.zip

    【标题】"idea热部署方法.zip"所涉及的知识点主要集中在使用IntelliJ IDEA这款流行的Java集成开发环境(IDE)进行热部署配置,以便在开发Spring Boot和Spring MVC项目时,能够快速地测试代码更改而无需每次都手动...

    IntelliJ+Maven+Jetty+Jrebel

    在提供的文档“IntelliJ+Maven+Jetty+Jrebel实现web项目java代码更改后热部署.docx”中,可能会详细介绍每个步骤的详细操作和可能遇到的问题。而“JRebel for IntelliJ IDEA”相关的网页文件可能是官方文档或教程,...

    IntelliJ IDEA 12创建Java Web项目并用Tomcat发布.docx

    在本文中,我们将深入探讨如何使用IntelliJ IDEA 12创建一个Java Web项目,并配置Tomcat服务器进行发布。IntelliJ IDEA是一款强大的集成开发环境(IDE),特别适合Java开发者,它提供了丰富的功能来简化Web应用程序...

Global site tag (gtag.js) - Google Analytics