使用spring-loaded开源项目,实现java程序和web应用的热部署

JDK1.5之后提供了java.lang.instrument.Instrumentation,即java agent机制能够实现类的redefinition和retransform。

redefinition对应Instrumentation.redefineClasses()能够实现类的热替换,但遗憾的是功能很有限。

The redefinition may change method bodies, the constant pool and attributes.
The redefinition must not add, remove or rename fields or methods, change the
signatures of methods, or change inheritance.  These restrictions maybe be
lifted in future versions.  

最近遇到一个开源项目spring-loaded,看了下官方的介绍文档:发现它功能比JDK自带的强大多了。

 Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is running.
 It transforms classes at loadtime to make them amenable to later reloading.
 Unlike 'hot code replace' which only allows simple changes once a JVM is running
 (e.g. changes to method bodies), Spring Loaded allows you to
 add/modify/delete methods/fields/constructors.
 The annotations on types/methods/fields/constructors
 can also be modified and it is possible to add/remove/change values in enum types.

经过自己的尝试,发现使用spring-loaded项目,确实可以实现java应用的热部署。下面介绍下如何将spring-loaded引入到项目中。我们可以运行下面的这段代码,然后修改A.say()方法,看看在不重启JVM的情况下,是否能够动态改变。

package test;

import demo.A;

public class TestPreMain
{

	// -javaagent:springloaded-1.2.0.RELEASE.jar -noverify
	public static void main(String[] args) throws Exception
	{

		A a = new A();

		while (true)
		{
			a.say();
			Thread.sleep(3000);
		}
	}
}

为了使用spring-loaded实现热部署,我们只需要在启动JVM的时候,增加如下的启动参数即可

-javaagent:springloaded-1.2.0.RELEASE.jar -noverify

如果是通过eclipse启动,那么可以在run confiuration中进行设置

接下来我们看下如何在tomcat中使用spring-loaded实现war包的热部署。将下载的springloaded-1.2.0.RELEASE.jar放到%TOMCAT_HOME%/bin/目录下,然后修改该目录下的catalina.bat

set JAVA_OPTS=-javaagent:springloaded-1.2.0.RELEASE.jar -noverify

这样就完成了spring-loaded的安装,能够检测tomcat下部署的webapp,在不重启tomcat的情况下,实现应用的热部署。

时间: 2024-10-29 10:46:15

使用spring-loaded开源项目,实现java程序和web应用的热部署的相关文章

硬核推荐15个最火的Spring实战开源项目!总有一款适合你!

哔哩哔哩在线演示视频: https://www.bilibili.com/video/av92191212 Guide哥注:下面这些推荐的项目几乎都和 Spring Boot 有关,毕竟这年头没有理由再搞 SSM/SSH 这些东西了. 商城系统 Guide哥注:下面的商城系统大多比较复杂比如 mall ,如果没有 Java 基础和 Spring Boot 都还没有摸熟的话不推荐过度研究下面几个项目或者使用这些项目当作毕业设计. mall :mall 项目是一套电商系统,包括前台商城系统及后台管理

饿了么开源项目:Java Comparator生成器

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51399159 公司Android项目里经常需要对元素进行排序,而排序都是多字段的,相应的Comparator比较难写.于是我就写了这么一个工具类,用户只需要指定排序规则,便可以自动生成相应的Comparator. 项目地址: https://github.com/Xiaofei-it/ComparatorGenerator 特色 Java编程

利用Spring CLI开发并打包java程序

1.安装java,假如没有安装,参考https://www.cnblogs.com/SakerLiu/p/9742259.html 2.安装maven sudo apt-get install maven 3.安装Spring CLI,从https://repo.spring.io/milestone/org/springframework/boot/spring-boot-cli/下载想要的版本 将解压完成的后的文件重命名为spring,并移动到/usr/local/下,添加到PATH exp

知道为什么叫spring吗,因为它java开发迎来了春天

Spring 顶级框架 谈及微服务,作为当前主流的企业框架Spring,它提供了一整套相关的顶级项目,能让开发者快速的上手实现自己的应用,今天就介绍下Spring旗下各个顶级项目: Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了. Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功

Java开源项目(备查)

转自:http://www.blogjava.net/Carter0618/archive/2008/08/11/221222.html Spring Framework  [Java开源 J2EE框架] Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器.然而,这仅仅是完整图景中的一部分

15 个优秀开源的 Spring Boot 学习项目

Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 <Spring Boot + Vue 全栈开发实战>迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑.经常有人问松哥有没有推荐的 Spring Boot 学习资料?当然有!买松哥书就对了,哈哈. 有需要书籍<Spring Boot+Vue全栈开发实战>PDF版的同学,可以在公众号:Java知己,发送:全栈开发实战,获取该书籍. 除了书呢?当然就是开源项目了,今天松哥整理了几个优质

转__Android开源项目(三 完结篇)

http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale/1 截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark.和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另外34个Android开源项目. 此前,CSDN移动频道推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“

GitHub上最火的74个Android开源项目

GitHub上最火的74个Android开源项目 1.ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏

CSDN首页&gt; 移动开发 直接拿来用!最火的Android开源项目(完结篇)

此前,CSDN移动频道推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“直接拿来用!最火的Android开源项目”系列文章(一).(二)中,我们也相继盘点了40个GitHub上最受欢迎的Android开源项目.对于GitHub上如此众多的项目,有人不断Mark,有人分享自己的经验,有人心生“看得眼花缭乱,果然是需要终身学习的时代”的感慨,不管怎么样,如果能让你真的有所学习有所收获,我们的目的也就达到了. 今天我们将继续介绍GitHub上另外34个非常受欢迎的Andr