首页IT科技基于springboot的毕设 研究方向(基于arthas热更新class脚本)

基于springboot的毕设 研究方向(基于arthas热更新class脚本)

时间2025-06-20 17:03:50分类IT科技浏览4576
导读:1. 概述 本地更新脚本是基于arthas工具的retransform命令热替换class,此方法用于在不重启项目的前提下,替换更新的class,如关键类添加打印日志,排查线上问题...

1. 概述

本地更新脚本是基于arthas工具的retransform命令热替换class             ,此方法用于在不重启项目的前提下                    ,替换更新的class      ,如关键类添加打印日志      ,排查线上问题

但是arthas工具的命令稍显复杂                    ,有那个时间还不如重新部署             ,因此需要一个可以快速替换的工具来进行替换

2. 方法一:ArthasHotSwap插件

使用idea插件 ArthasHotSwap插件      ,安装后                   ,选中类名数据右键点击“swap this class             ”,会复制一个脚本             ,然后粘贴到项目启动的服务器上,可完成替换                   ,具体网上均有教程                   ,此处不多赘述             。

3. 方法二:自定义shell脚本

我本人也使用过这个插件,但是试过几次均没有成功因此模仿ArthasHotSwap插件的流程             ,写了一个自定义脚本                    。

3.1. ArthasHotSwap 插件流程

大致流程如下:

1.将本地需替换的class文件                   ,编码成base64文本文件      ,并上传至文件服务器(可能是OSS) 2.提供一个默认执行脚本             ,给用户复制 3.用户拿到复制脚本后                    ,在服务器上执行 4.脚本下载base64文本文件      ,并解析成class文件 5.启动arthas命令      ,如果用户没有安装                    ,脚本会自动安装             ,默认路径 /home/用户名xxx/.arthas/ 6.执行arthas中的retransform 命令      ,将解析出来的class文件替换至运行的jvm中

3.2. 自定义脚本

按照这个流程                   ,自定义写了一个脚本             ,去掉了上传文件服务器步骤,只需要把许替换的文件上传至服务器指定目录                   ,启动脚本时指定项目包名称                   ,即可完成指定项目多个class文件热替换

#热刷新class指定路径配置 updateClassPath="/tmp/replace" #服务器上arthas路径 arthasPath="/home/cmp/.arthas/lib/3.6.7/arthas" #入参 项目包名称,支持模糊匹配 projectName=$1 rm -f tmp_in mknod tmp_in p exec 8<> tmp_in sh ${arthasPath}/as.sh --select $projectName <&8 & echo "********************************************* Arthas HotSwap The Java Class *************************************************************" sleep 1s echo " " >> tmp_in sleep 3s echo "开热加载......" #遍历目录中的所有class文件 for file in ${updateClassPath}/* do echo ${file} #如果file后缀是class 执行替换 if [ "${file##*.}" = "class" ]; then #开始启动arthas项目 echo "热加载${file}" echo "retransform ${file}" >> tmp_in fi done echo "quit" >> tmp_in

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网页设计 动漫(HTML+CSS简单漫画网页设计成品 蜡笔小新3页 大学生个人HTML网页制作作品)