`
roc08
  • 浏览: 224095 次
  • 性别: Icon_minigender_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
1
2
分享到:
评论

相关推荐

    自动拷贝class等文件

    介绍下这个打包工具 把本次你改动的java工程下的文件对应的class文件自动打包,然后热部署发布即可 如果你需要频繁改动java代码,热发布几个文件到服务器上,你会怎么做呢? 没有工具的人会手动拷贝目录 然后到...

    Jrebal热部署

    此为Linux下Eclipse添加Jrebal热部署插件,将.jrebal文件复制到主目录下,其余与Eclipse下添加插件基本一致。

    hot2hot:class热部署

    hot2hotclass热替换项目当A.run()在执行时,替换A。当然run中的参数不受影响,下次执行使用的就是新的class

    java自动打包工具

    介绍下这个打包工具 把本次你改动的java工程下的文件对应的class文件自动打包,然后热部署发布即可 如果你需要频繁改动java代码,热发布几个文件到服务器上,你会怎么做呢? 没有工具的人会手动拷贝目录 然后到...

    Jdk 动态编译 Java 源码测试 Demo

    通过 Jdk 工具类,直接将 Java 源码编译为 Class 字节码,并可加载为 Class 对象; 实例化后,可调用实例对象的方法 通过上面的实现,可以在线动态修改源码,并触发编译,加载到线上项目内,实现类似于热 部署的...

    Java JRebel 免启动插件(破解版)

    IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目前对于idea热部署最好的解决方案就是安装JRebel插件,这样不论是更新 class 类还是更新 Spring 配置...

    lets-hotfix:Dynamic class reloading for java。Java代码热更新,支持本地、远程

    Class hot reload for java Java代码热更新工具,节省宝贵开发时间 一、背景 在平时的开发过程中,开发流程一般是,编写/修改代码 -> 编译/打包 -> 部署/重启服务 -> 测试刚才的代码 -> 编写/修改代码 -> 编译/打包....

    Java EE常用框架.xmind

    无论是热部署或者是热加载、都是基于Java类加载器来完成的。 SpringBoot实现热部署 1、在plugin标签中加入插件 Shiro 简介 shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户...

    Jrebel 2018.1.2 Eclipse离线安装包

    Eclipse Tomcat 项目热部署修改Class类不需要重启Tomcat,热加载tomcat。 Jrebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。 JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    jrebel_6.4.8_agent_crack

    JRebel则可以动态监视class文件及配置文件,如果有文件更新,被调用时就会被JRebel重新加载,达到热部署的目的。 JRebel支持Eclipse、MyEclipse、IntelliJ、NetBeans等众多IDE,我们以Eclipse为例,在Eclipse中想要...

    JRebel插件离线安装

    IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目前对于idea热部署最好的解决方案就是安装JRebel插件,这样不论是更新 class 类还是更新 Spring 配置...

    AnyFo - Util - DynaObject :专门创建动态对象的工具

    那么,如果要在程序退出之前能动态的实时 加载修改后编译出来的新的.class文件中的效果,则需要创建动态对象,如同Tomcat中的热部署效果一样。 于是,专门创建动态对象的工具包DynaObject产生了。 DynaObject...

    JuShaTa:JuShaTa是一个Java容器,提供模块隔离及模块热加载能力

    JuShaTa是一个Java容器,提供模块隔离及模块热加载能力。 一、前言 大部分Java开发者,对Tomcat都不会太陌生,毕竟当时主流的开发方式还是将应用打包成war包,部署在webapps目录下随Tomcat运行。在Tomcat中,每个Web...

    Java 数据库主键生成类 IdWorker

    java 实现代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65...

    ArthasHotSwap:此存储库是Intellij IDEA的插件,可以帮助您无需任何配置和调试即可实现热插拔。进行,只需几个简单动作就能完成)

    阿尔萨斯热交换有时,当...选择需要热部署的javasource文件或者类文件,在类名或方法名上快捷快捷键,选择“ Arthas Hot Swap”的“ Swap this class”,插件后台执行成功后会把热部署需要的命令复制到粘贴板。登录远程

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    Java 实时社区论坛.zip

     <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>    <param-name>useFileMappedBuffer  <param-value>false    用户注册时是启用邮件验证的,如果需要修改请参考相关代码。商用...

    SpringBoot新手学习手册

    8.1 什么是热部署 37 8.2 项目演示案例 37 8.3 热部署原理 37 8.4 Devtools依赖 38 8.5 Devtools原理 38 九、 监控管理 38 Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI...

Global site tag (gtag.js) - Google Analytics