← 返回文章列表

OA系统热更新Java类

我们的Java类在OA系统中运行时,如果发现bug,因为白天有大量用户在使用,无法重启JVM,就只能半夜更新代码并重启,故障处理时间很长。经研究,部分bug完全可以在白天通过热更新手段迅速修复。

工具:Arthas(阿里巴巴开源的JVM热更新工具)

热更新要求:类不能增减字段、方法,只能修改方法的执行过程。

热更新过程:

  1. 本地修改Java代码,编译成class文件,上传到OA系统中,覆盖问题class文件(避免下次重启仍加载问题class文件)。
  2. 启动Arthas,选择名称为Resin的Java进程(OA系统的Web容器)。Resin进程可能有多个,在Arthas连接到进程后,通过jad com.company.<Tab键>来判断进程中是否有我们的Java类,从而确定是OA系统的进程。
  3. 在Arthas中执行命令retransform <class文件的路径>,尝试热更新。如果看到输出success,则成功,否则失败。注意不要使用redefine命令。