使用 hostswap agent 实现热部署

我们在开发一些大型项目的时候,由于项目中代码比较复杂,导致每次构建和运行都要花费大量时间。为了解决这个问题,我们可以使用一些热部署组件来实现代码运行过程中热部署。这样做的好处是可以帮助我们提升开发和调试的效率,使我们的代码开发获得一种开发即所得的效果。

热部署的插件有很多,像市面上比较流行的 JRebel,或者是 Spring DevTools 都可以实现代码的热部署,这里详细介绍一下一款开源免费的代码热部署组件 HotSwap Agent,这个组件以Agent的方式对代码进行热部署。
在这里插入图片描述

HostSwap Agent 是一款开源的代码热部署组件。它的实现基于了 DCEVM 这款插件对JVM 进行了改造。同时针对市面上不同的框架如 SpringHibernate 等都实现了相对应的热部署插件,此外用户还可以自定义热部署插件来实现自定义框架的热部署功能。

目前对于 JDK8 ,DCEVM 支持到了 Java-8u181 版本,在这之上的 Java 版本安装 DCEVM 启用 DCEVM 后会报错,因此对于 JDK8 的用户需要特别注意安装 DCEVM 在指定的 JDK8 版本上。
在这里插入图片描述
对于使用 JDK11 的用于则需要安装 TravaOpenJDK,该版本的 OpenJDK 集成了 HotSwapAgent,因此使用该版本的用户不需要特别下载 HostSwapAgent ,只需要开启特定选项即可使用热部署功能。

如何安装 HotSwapAgent

这里我们着重讲解一下 HotSwapAgent在 JDK8 上的设置操作。

首先我们需要下载 DCEVM 插件,然后将其安装在对应版本的 JDK 上,由于DCEVM 最高支持 jdk8 的版本是 jdk8u181,因此我们需要首先下载该版本的jdk,并安装在我们的电脑上。

然后我们需要到 DCEVM 网站上下载对应的插件,将 DCEVM 安装到我们的JVM上。

在这里插入图片描述
下载完成后解压,打开插件。该插件会自动检查当前系统中有哪些 JVM,我们只需要按照提示将 DCEVM 安装到 jdk8u181上即可。
在这里插入图片描述
注意dcevm的安装模式有两种,第一种会将默认的jvm替换为 dcevm,默认启用相关特性,而第二种会将 dcevm 作为一个额外的选项,只有到配置了需要启用 dcevm时才会启用 dcevm,否则使用默认的 jvm,这里如何设置看用户需要。

启动 dcevm 安装插件时需注意,需要以管理员的方式运行 dcevm 安装插件,否则可能会报权限不足的异常。

在这里插入图片描述

如何以管理员身份运行 jar 包

在这里插入图片描述
菜单中输入 cmd ,然后以管理员身份运行命令提示符,然后以 java -jar 方式运行 DCEVM 插件。

java -jar "D:\Downloads\DCEVM-8u181-installer-build2.jar"

接下来就是下载 HotSwapAgent ,在启动时添加该 jar包作为 agent 选项即可。

新建一个 SpringBoot 应用在 idea 中配置如下:

-XXaltjvm=dcevm
-javaagent:D:\Downloads\hotswap-agent-1.3.1-SNAPSHOT.jar=autoHotswap=true 

注意 autoHotswap=true 一定要添加上,作为 agent 参数不可少。

在这里插入图片描述
然后启动运行应用,如果出现 HotSwapAgent 日志就表示配置成功了。
在这里插入图片描述

几种异常的启动效果

在这里插入图片描述

在这里插入图片描述

HotSwapAgent 插件

除此之外,HotSwapAgent提供了 Idea 等插件,用户可以按照需要下载使用。需要注意的是,在 jdk8 上仍然需要首先安装 DCEVM 作为支持,否则无法使用。
在这里插入图片描述
安装完成后,Ctrl+Alt+S打开设置。

Tools->HotSwap 中设置参数:
在这里插入图片描述
在这里插入图片描述
在配置了上述插件后,我们就不要手动的一个个在启动选项中添加-agent参数了,这个插件会自动帮我们添加相关参数。

测试

我们在启动应用后,在 controller 中新添加一个方法进行测试:
在这里插入图片描述
在代码编写完成后,别忘了手动构建一下Ctrl+F9
在这里插入图片描述
调用测试:
在这里插入图片描述

参考资料

SpringBoot项目通过HotswapAgent实现热部署(JDK1.8)
用hotswap agent实现热替换代码
玩转 DCEVM + HotSwapAgent
HotSwapAgent-IntelliJ-IDEA-plugin

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值