JRebel + Maven + Jetty 热部署

ave. Refresh. Enjoy. And stop redeploying in Java!

JRebel is a JVM-plugin that makes it possible for Java developers to instantly see any code change made to an app without redeploying. JRebel lets you see code changes instantly, versioning classes and resources individually and updating one at a time instead of as a lump application redeploy. When developers make a change to any class or resource in their IDE, the change is immediately reflected in the deployed application, skipping the build and redeploy phases and preventing an average of 5.25 work weeks per year in redeploys! 

http://zeroturnaround.com/jrebel/
 \
http://www.infoq.com/cn/news/2010/05/jrebel
http://www.blogjava.net/xylz/archive/2011/06/12/352109.html
http://dl.dropbox.com/u/22951342/jrebel.jar  www.zeroturnaround.com最近又接触到一点WEB应用,想到Resin服务器重启需要花费比较多的时间(Spring将WEB服务搞得越来越复杂,越来越臃肿了),所以又想到了08年那时候用JavaRebel了。一段时间不用人家居然改名为JavaRebel了。
如果不熟悉的可以搜索下JRebel/JavaRebel,这里是官方网站: www.zeroturnaround.com。
最近刚发布了4.0版本,功能更强大,配置也更加简单了。价格不菲。
官方提供30天试用版,可以先体验下再决定是否购买。

看到里面的代码混淆让我很崩溃,没有深入研究混淆后的运行机制。比如下面居然有两个名称相同,参数相同,但是返回值不同的静态方法,不知是如何执行的。
public static void a(String s)和 public static String a(String),以及
private static void c()和private static String c()。
猜测是在运行的时候自己进行JVM指令的执行。这样的代码反编译后都不知道怎么写回去,想到崩溃,因为两个方法居然都有地方调用了。

JRebel + Maven + Jetty 热部署

zhangthe9 提供了一个4.0的破解版,我很好奇,咨询了下,居然还是以前的RSA签名算法。

好吧,翻出08年写的JavaRebel 2.0-M1的破解程序,重新生成一个license文件,修改公钥,替换license文件,居然运行正常。这么多年了,签名算法和步骤居然一点都没变,嗯,人家真执着!
当然是无限制版,所有功能可用,也没有时间限制。


#############################################################

 JRebel 
4.0  ( 201105311152 )
   with Enterprise Add
- On !  (see http: // jrebel.com/enterprise)
 (c) Copyright ZeroTurnaround OU, Estonia, Tartu.

 Over the last 
1  days JRebel prevented 
 at least 
0  redeploys / restarts saving you about  0  hours.

 This product is licensed to www.imxylz.info
 
for  unlimited number of developer seats on site.
 
==  Cracked by imxylz (imxylz#gmail.com) from JavaRebel  2.0 - M1,  2008   ==

#############################################################

伟大领袖毛主席,指引我们向前进!
jrebel cracked by imxylz
伟大领袖毛主席,指引我们向前进!
jrebel cracked by imxylz
JRebel: Reloading  class   ' ReloadClass ' .change 
伟大领袖毛主席,指引我们向前进!
class !

破解思路很简单,替换公钥,使用自己私钥生成签名License文件。
如果想屏蔽版本更新提示,有以下几种思路:
(1)修改调用更新坚持的类(难道有点大,因为混淆比较严重,不容易反编译)
(2)修改更新服务器的地址,将 http://update.zeroturnaround.com/jrebel/地址修改,可以使用二进制工具直接修改字符串,比如我就将update改为updatt,无法解析域名就不能获取最新版本了。
(3)增加-Drebel.disable_update=true参数即可。(这种方法最简单)。

当然了,为了“保护知识产权”,不会将破解文件放出来,有需求的可以留言联系。(所谓的“计算机条例”是允许为了学习、研究而进行相关逆向工程的,哈哈)。

好吧,架不住国人的热情,这里是下载地址,需要翻X,你懂得! http://dl.dropbox.com/u/22951342/jrebel.jar  

[关键字: JRebel, JavaRebel, JRebel Crack, JRebel License, JavaRebel License]

[Java] JRebel + Maven + Jetty 热部署

  2752人阅读  评论(0)  收藏  举报

早就厌烦了 Java 开发不断的容器自动重新加载漫长的过程,研究 maven + jetty 热部署方案的过程中偶然发现一样不错的东东,试用了一下果然很爽,发上来给大家共享,此物名为 JRebel (javarebel),目前支持大部分主流的 Java 容器,配置也相当简单,以下是与 maven + jetty 环境整合的步骤与要点:

 

首先,下载 JRebel 包,目前网上有两个破解版本分别是 JRebel2.1a 以及 JRebel3.0-M1,我使用的是前者,下面是下载地址:http://d.namipan.com/d/842d40cc1ed226fc69e04892cdaeaec85cf85be105f41400 (需要的请尽快下载,以免链接失效)。

 

然后拷贝到 %REBEL_HOME% 目录并添加该环境变量,进入目录运行 java -jar %REBEL_HOME%/jrebel.jar 生成根据本机 JVM 环境生成的 jrebel-bootstrap.jar 运行文件。

 

然后添加 MAVEN 运行环境变量:MAVEN_OPTS 值为 -noverify -Xbootclasspath/p:%REBEL_HOME%/jrebel-bootstrap.jar;%REBEL_HOME%/jrebel.jar 然后再配置目标项目的 pom.xml,关闭 maven 的 jetty 插件本身的 reload 配置:

 

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
</configuration>
</plugin>

 

最后启动 mvn jetty:run 你会发现现在不需要 reload 服务器就可以加载实时修改过的 class 文件了,很不错吧。其实我个人更推荐不要设置 MAVEN_OPTS 环境变量,新建一个比如名为 mvnrebel.bat 的文件,改写一下 mvn.bat 文件,把以上的运行命令加进去,这样还保留了原本的 mvn 执行文件,同时也可以根据需要启动带热部署的方案。

 

JRefer 工具还提供其他各种主流环境的整合方案,包括 JBoss,Glassfish,Tomcat,SpringSource,Weblogic,SAP 等,详细内容请参考:http://www.zeroturnaround.com/reference-manual/server.html 对于开发人员来说,这无疑会大大减轻开发重新加载的问题,据调查平均可以提高 20% 的开发效率,效果相当的可观哦,有兴趣的朋友值得一试~

你可能感兴趣的:(jrebel)