对于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热部署工具,如JRebel、DCEVM(Dynamic Class File Verifier Modification)和Spring Boot DevTools。它们各自有其特点和优势,例如JRebel提供了广泛的支持,不仅适用于Spring框架,还...
2. **JBoss Class Loading**: JBoss自身也提供了热部署功能。当检测到应用中的类或者资源发生变化时,它会自动卸载旧的类加载器并创建新的类加载器来加载更新后的类。但是,这种机制并不总是完美,有时可能需要手动...
在实际编码工作中,多文件修改是家常便饭,Sonic对多文件的热部署能力尤为突出,它可以通过依赖分析等手段来对多文件批量进行远程热部署,并且支持Spring Bean Class、普通Class、Spring XML、MyBatis XML等多类型...
Java 热部署技术是开发过程中的一大挑战,它旨在实现在不重启 Java 虚拟机(JVM)的情况下更新应用程序的部分代码。由于 JVM 默认仅在启动时加载类,一旦类加载,即使原始的 .class 文件发生变化,JVM 也不会自动...
在Java开发过程中,为了提高开发效率和调试便捷性,我们经常需要实现类的热替换(Hot Deployment),也就是在不重启应用的情况下更新或替换已加载的类。Java类热替换技术通常涉及类加载器(ClassLoader)的自定义...
可以尝试在`jboss-app.xml`文件中将`loader-repository`设置为`jboss.web.deployment:loader-repository-class=org.jboss.web.tomcat.service.loader.HotDeployClassLoaderRepository`,以使用JBoss的热部署类加载器...
Java热部署技术主要指的是在Java应用运行过程中,无需重启服务就能更新代码并立即生效的能力。这对于开发阶段提高效率和减少停机时间至关重要。虽然标准的Java虚拟机(JVM)并不直接支持类的动态加载和替换,但是...
JRebel是一款商业的热部署工具,它能在代码修改后立即反映到运行中的应用中,无需重启服务。 - JRebel通过替换Java虚拟机(JVM)的类加载机制,使得已加载的类可以被动态替换,达到热重载的效果。 3. **Tomcat自带...
综上所述,Arthas是Java开发者的得力助手,它提供的线上热部署和项目在线诊断功能大大简化了问题排查和性能优化的过程。通过深入学习和实践Arthas,开发者可以更高效地维护和优化Java应用程序。
**Tomcat热部署方案详解** 在开发过程中,频繁地重启服务器来测试代码的修改是非常耗时的。Tomcat热部署方案就是为了应对这个问题,允许开发者在不重启Tomcat的情况下,更新应用中的类文件,提高开发效率。本文将...
在热部署场景下,当开发者修改HelloWorld.java的代码后,JRebel会检测到这种变化,并自动替换掉旧的HelloWorld.class,使得新的代码逻辑立即在运行的应用中生效。这样,开发者就可以快速验证代码更改的效果,而不必...
尤其对于Java开发者来说,IntelliJ IDEA(简称IDEA)提供的热部署功能极大地提高了开发效率。 #### 二、IDEA热部署配置步骤详解 ##### 1. 设置project目录为classes - **操作步骤**: - 打开IDEA,选择项目。 -...
在配置列表中,选中你要热部署的应用,勾选“允许替代类”(Allow Alternative Classloading)选项,确保“重新部署”(Redeploy)是启用的。 6. **配置热部署**:根据插件的具体说明进行配置,例如设置代理服务器...
在Java开发中,热部署(Hot Deployment)是一个关键特性,它允许开发者在应用程序运行时更新代码,而无需停止和重新启动服务。这对于大型系统尤其重要,因为重启过程可能会浪费大量时间和资源。Java虚拟机(JVM)...
在本文中,我们将深入探讨如何使用SpringBoot和Mybatis构建基础的开发环境,并配置热部署。SpringBoot以其简化Spring应用程序的初始设置而受到广大开发者喜爱,而Mybatis作为轻量级的持久层框架,提供了灵活的数据...
1. **JRebel**: JRebel是一款知名的商业工具,它实现了Java应用的热部署功能。当源代码发生变化时,JRebel会自动将新版本的Class文件加载到运行中的Java虚拟机(JVM)中,从而使得开发者可以立即看到更改的结果。...
总结来说,Java类动态加载是一种强大的技术,可以用于实现插件系统、热部署等功能。通过自定义ClassLoader和利用`JavaCompiler` API,我们可以实现Java源文件的动态编译和加载,从而实现程序运行时的灵活扩展。在...
Java中基于自定义类加载器实现热部署是指在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象。热部署是Java中的一个重要概念,它可以使得应用程序在不需要重启的情况下,实现类的动态...
在IT行业中,热部署(Hot Deployment)是一种非常实用的技术,特别是在Java开发环境中,它允许开发者在不中断应用程序运行的情况下更新代码或资源。标题中的“热部署.rar”表明这是一个关于如何实现热部署的压缩包...