Arthas的redefine命令

需求场景

  • 举个栗子,在线上代码某个class的方法添加日志输出,修改方法返回结果,但是,又不想直接修改class

做法

  • 1.上传修改后的class文件到服务器任意路径,比如:/root/java/HelloController.class
  • 2.下载arthas-boot.jar上传到服务器,启动:java -jar arthas-boot.jar
  • 3.根据pid选择要修改class的线上程序
  • 4.通过redefine加载修改后的class文件,redefine /root/java/HelloController.class
  • 5.验证效果,结束
  • 6.这个方式只是修改运行时内存,class文件并没有改变,服务重启就失效了

效果

Arthas的redefine命令
参考:
https://alibaba.github.io/arthas/quick-start.html#arthas
https://alibaba.github.io/arthas/redefine.html