Java class 热部署_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java class 热部署

Java class 热部署

 2013/8/20 0:33:21  roc08  程序员俱乐部  我要评论(0)
  • 摘要:对于java程序员来说每天有大量时间浪费在重启tomcat,而对于使用OSGI的同学们来说增加一个方法或变量便需要重新打包部署重启,更是耗时至极。热部署一般有两种实现思路:1.文件改变后去加载新的文件2.直接在原文件上修改。因此对于一个热部署工具,如果是静态文件,那么上述两种方式都是很简单就可以实现的,而对于使用osgi方式,静态文件在jar中可以使用思路1(直接关联到workspace下)。而对于class实现起来就比较麻烦了,对于思路1一般采用类替换,这里有几种方式
  • 标签:Java class
对于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
上一篇: Java多线程并发编程-Condition 下一篇: 没有下一篇了!
发表评论
用户名: 匿名