Java代码热更新工具—支持生产环境

介绍

        这是一个java代码的热更工具,非常适合用来做线上bug的紧急修复,这个工具支持所有普通方法,静态方法的动态更新,原理是通过agent修改编译在java虚拟机上的字节码实现的。热更成功之后代码实时生效,不需要重启服务器。有了这个工具,可以直接避免线上的很多生产事故,避免因为代码Bug造成的重大损失。 目前支持JDK 8 ,JDK 11

注意事项

        1、只支持热更Java类的方法体,包括普通方法和静态方法(但不能修改方体的参数和返回值)。

        2、支持所有Spring管理的类。支持修改已经在缓存中的类对象。

        3、热更的类必需Java的虚拟机加载过。

        4、热更的方法内不能调用线上代码里未定义的方法或类,否则程序会直接报错退出。

使用说明

        将下面所有文件上传到Java程序所在Linux服务器的某个目录中

 hot_update.sh的内容:

 效果展示:

        为了方便展示。用一个5s轮询的定时器,分别调用TestService的静态方法staticTest和普通方法commonTest,同时,TestService是Spring管理的。 将代码部署到Linux服务器上,可以看到输出如下:

接下来,就可以修改方法内的代码,将AAA换成BBB ,并将编译后的class文件放到热更工具目录下的classes。 

 执行hotpupdate.sh 传入程序的端口号  观察日志输入:

 到此。热更成功,非常丝滑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snovi-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值