设为首页 收藏本站
查看: 892|回复: 0

[经验分享] JDK扩展DCEVM让WEB程序完全不重启调试

[复制链接]

尚未签到

发表于 2017-3-2 09:29:49 | 显示全部楼层 |阅读模式
  JDK扩展DCEVM让WEB程序完全不重启调试
  转自:http://acooly.iteye.com/blog/1777119
  目前JDK默认支持对方法体内部的修改,可以重新自动加载。所以在WEB工程中,可以不重启WEB容器的情况下修改方法体内部的实现,进行程序调试。但是很多时候需要新增实例变量和方法,这个时候,默认的JDK就不能支持。
  这里推荐一个动态代码扩展的VM:The Dynamic Code Evolution Virtual Machine,可以实现不重启WEB容器的情况下,新增实例变量和方法,并动态reload后进行调试。
  官方下载:http://ssw.jku.at/dcevm/binaries/
  官方介绍:
  The Dynamic Code Evolution Virtual Machine (DCE VM) is a modification of the Java HotSpot(TM) VM that allows unlimited redefinition of loaded classes at runtime. The current hotswapping mechanism of the HotSpot(TM) VM allows only changing method bodies. Our enhanced VM allows adding and removing fields and methods as well as changes to the super types of a class.
  一般开发环境是windows 较多,下载WIN版本进行配置。
  官方说JDK1.6的update26不兼容,之后的应该都可以,我使用update29是OK的。
  我测试发现,直接使用JDK1.6_update29或以上的几个版本,使用Jetty和tomcat都可以实现实例变量和方法级的变更自动reload。但是Eclipse3.7版本IDE对修改后的JDK不兼容。所以,这里采用的方案是,ECLIPSE-IDC使用独立的原生JDK,开发工程和调试器使用扩展后的JDK,所以这里使用2个JDK。
  配置方案:

  • ECLIPSE-IDE运行环境:jdk1.6.0_38 (原生)
  • 工程使用的编译环境和调试环境:jdk1.6.0_29(dcevm扩展)
  1.安装2个JDK
  首先安装两个JDK版本,要求在JDK1.6update26以上,官方推荐JDK1.7,但是我还是暂时使用JDK1.6版本。怎么安装这里就省略了。我分别安装的是JDK1.6的update29和update38,统一安装在d:\tools\java下面。安装目录分别为:D:\tools\java\jdk1.6.0_29和D:\tools\java\jdk1.6.0_38。
  2.配置环境变量
  配置操作系统JAVA环境变量,用于IDE或JAVA程序的运行时环境。
  JAVA_HOME=D:\tools\java\jdk1.6.0_38
  PATH=%JAVA_HOME%\bin;...
  3.安装dcevm扩展到编译和调试JDK
  运行dcevm扩展jdk1.6.0_29,用于工程编译和调试JDK。
  进入已经下载的dcevm-*-win.jar所在目录,运行启动配置界面。
  E:\tools\develop\java >java -jar dcevm-0.2-win.jar
  会弹出安装界面,直接点击对应的JDK和JRE,然后点击安装即可。安装程序会备份原始JDK的 bin/client/jvm.dll and bin/server/jvm.dll文件,并使用一个修改版本替换,然后添加dcevm.jar到lib/ext/下,实现原始JVM的扩展。而且这个可以卸载和还原的。
  下图所示,我操作系统中安装了多个JDK,选择作为工程编译和调试的jdk1.6.0_29版本安装dcevm,然后点击“Test Instanllation”测试,测试通过即可,如果以后不想使用或换版本,可以卸载还原。
DSC0000.png

  4.打开ECLIPSE-IDC进行配置
  配置工程编译的JDK和JRE,这里选择已经dcevm扩展后的jdk1.6.0_29
DSC0001.png

DSC0002.png

  如果使用maven+jetty的方式调试,则配置调试的JDK选择jdk1.6.0_29(dcevm)
  
DSC0003.png

  如果使用tomcat插件,则配置VM选项为jdk1.6.0_29(dcevm)
  
DSC0004.png

  好了,配置完成,你可以直接使用你喜欢的方式调试工程,最重要的是修改调试的JDK为dcevm扩展版本。
  最后, 最好只用在开发环境,很方便,很快,生产环境就算了哈。
  希望对你又帮助!~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349096-1-1.html 上篇帖子: json字符串转java对象数组 下篇帖子: 仿分词统计的MapReduce 程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表