我们在工作的过程中会遇到java应用已经部署或升级投入使用,发现某个单元文件有bug需要修正,但是客户的应用目前不能停止,而且不能因为一个非致命的bug来进行整个平台的一次升级。我们需要进行单文件的更新在不停线的情况下。
下面是具体的操作步骤
一、下载arthas工具 arthas.aliyun.com
二、对需要进行更新的java单元文件进行编译,生成最新的 class。
intelj里的操作:打开编辑的java单元文件,构建|重新编译 .....java,新生成的class文件与原代码文件会在同一目录,将生成好的class文件复制到服务器项目的目录中,或者自己制定一个目录。这个是无关的只要便于管理文件就好。
三、运行arthas进行更新
1、在arthas目录下,cmd 命令启动arthas-boot.jar文件
java -jar arthas-boot.jar
2、系统会列示已经运行的java程序清单,根据需要更新的应用,输入对应的序号回车。
3、输入命令 retransform D:/xxxxx/xxxServiceImpl.class 回车执行覆盖,系统会提示 retransform success, size: 1, classes
4、通过命令 retransform -l 可以显示已经更新的文件清单列表