当前位置: 首页 > news >正文

arthas实现类的热部署

arthas实现类的热部署

问题

我们要实现一个功能,前台输入1返回hello,其他输入返回world。如下,这里字符串判断相等错误使用了等号。
在这里插入图片描述

导致前台输入1也是返回world。
在这里插入图片描述

修复

1、下载arthas,上传服务器
https://arthas.aliyun.com/

在这里插入图片描述

2、启动arthas

java -jar arthas-boot.jar

输入编号1,连接到我们的应用程序:
在这里插入图片描述

3、使用jad命令反编译字节码文件,生成java文件保存至/usr/local/opt/目录

jad --source-only com.example.controller.BookController > /usr/local/opt/BookController.java

在这里插入图片描述
可以看到java文件已经生成。

4、使用记事本打开java文件,可以看到22行使用的等号,这就是问题根源。
在这里插入图片描述

将22行改为equals,保存
在这里插入图片描述
5、查找类加载器的哈希码
语法:sc -d 类的全路径名

sc -d com.example.controller.BookController

在这里插入图片描述

6、复制上一步的哈希码。使用mc命令编译修改过的代码
语法:mc -c 类加载器哈希码 java文件路径 -d 字节码文件路径

mc -c 3d646c37 /usr/local/opt/BookController.java -d /usr/local/opt

执行上述命令后,就会生成字节码文件
在这里插入图片描述

7、使用retransform命令将新的字节码加载到内存中
在这里插入图片描述

8、测试验证
浏览器输入1,返回hello
在这里插入图片描述

输入其他值,返回world
在这里插入图片描述

注意

1、使用retransform命令只是将字节码信息更新至内存中。如果程序重启,读取到的还是本地磁盘的字节码信息,还是有问题的字节码。除非将class文件放到jar包中更新。

2、使用retransform命令不能添加方法或字段,也不能更新正在执行的方法。

http://www.dtcms.com/a/550168.html

相关文章:

  • Rust 注释与文档注释:从代码可读性到 API 文档化的工程实践
  • 取名网站怎么做2022年新闻摘抄十条简短
  • 网站开发工具教程wordpress 关键词获取
  • tensorflow的广播机制
  • MIT-最大连续子序列和(MCS)
  • 深圳市住建局网站官网济南网站建设公司哪家好
  • Kubernetes资源管理全解析
  • 郑州企业型网站建设怎么做可以访问网站
  • 网站制作前必须做的事情有哪些网站行业
  • TC3xx芯片ACCEN寄存器保护详解
  • Linux上如何挂载磁盘
  • 卫星轨道计算中的数值精度陷阱:第三体引力摄动的稳定性优化
  • 白山网站seoe网站的图标怎么做
  • RHSCA---用户和组管理
  • 温州网站域名注册服务公司易语言如何做浏网站
  • 仿糗事百科网站源码dede二次开发分享+评论+互动国外网站域名
  • 仓颉语言中String的内存表示深度解析
  • NetSuite 中自定义基础打印模板的调整方法分享
  • 东城企业网站开发什么网站能免费做简历
  • “调用销毁者置于末尾”原则
  • GRPO相关优化论文
  • Openvins学习---ov_msckf中的State.h
  • 有什么网站可以做数学题项目建设全过程
  • 德庆网站建设良精企业网站管理系统
  • dz网站自己做的模板放在哪里小说网站建设的支柱
  • idea中Docker一键自动化部署
  • faster-whisper热词详解与程序设计
  • 电子电力技术的控制电路学习分享1
  • 原生JS实现虚拟列表:从基础到性能优化的完整实践
  • 万全网站建设Myeclipse怎么做网站