Java class 热部署

6 篇文章 0 订阅
4 篇文章 0 订阅
对于java程序员来说每天有大量时间浪费在重启tomcat,而对于使用OSGI的同学们来说增加一个方法或变量便需要重新打包部署重启,更是耗时至极。
热部署一般有两种实现思路:1.文件改变后去加载新的文件2.直接在原文件上修改。因此对于一个热部署工具,如果是静态文件,那么上述两种方式都是很简单就可以实现的,而对于使用osgi方式,静态文件在jar中可以使用思路1(直接关联到workspace下)。
而对于class实现起来就比较麻烦了,对于思路1一般采用类替换,这里有几种方式,一是抛弃原来的类加载器和类,重新创建一个类加载器并加载类;二是将类拆分成入口和方法,入口不变,真正的里面的方法都是在关联的一些匿名的类里,在新增/修改方法的时候,产生一个新的类,并且关联到那个入口上去,这便是动态语言(ruby)采用的机制,JRebel也采用类似机制实现的热部署。
对于思路2,dcevm也进行了实现,其思路与Jrebel有相似的地方,只不过JRebel运行在class loader这一层,而dcevm在jvm这一层, DCE VM通过修改jvm,在执行程序与硬件(应该确切的说是code编译后的机械码)中增加了一层,来实现代码在运行期动态修改(DCE)。

JRebel是收费的,而且对于OSGi这种多bundle环境来说配置复杂,DCE VM由于更底层因此安装使用非常简单。
1. 下载dcevm-0.2-win.jar
2. 运行:java –jar dcevm-0.2-win.jar
3. 选择一个jdk install,推荐使用jdk1.6.0 update25,亲测这个版本可用
4. Test install
5. myeclipse中使用此jdk作为myeclipse和tomcat使用的jdk

亲测在类中增加了一个属性和get set 不必重启tomcat即可在页面端生效

参考文章
http://code.alibabatech.com/blog/dev_related_470/principles-of-anatomy-jrebel.html
http://www.cnblogs.com/redcreen/archive/2011/06/14/2080718.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值