需求場景
- 舉個栗子,在線上代碼某個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文件並沒有改變,服務重啓就失效了
效果
參考:
https://alibaba.github.io/arthas/quick-start.html#arthas
https://alibaba.github.io/arthas/redefine.html