栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

基于阿尔萨斯arthas实现java项目的热部署

基于阿尔萨斯arthas实现java项目的热部署

**

基于阿尔萨斯arthas实现java项目的热部署

**

PS:不是这个孝子

最近bug产出比较多,面子有点挂不住,突然发现了这个好东西,下次再发现bug,就悄悄的热部署下,神不知鬼不觉,然后把锅甩给网络就好了(_)

首先下载并运行arthas项目

wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

启动后通过id定位到需要热部署的进程

[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 17056 org.apache.catalina.startup.Bootstrap
  [2]: 7169 org.elasticsearch.bootstrap.Elasticsearch
  [3]: 30820 org.apache.catalina.startup.Bootstrap
  [4]: 11958 /home/activemq/apache-activemq-5.15.4//bin/activemq.jar
  [5]: 19622 /home/activemq/apache-activemq-5.15.4//bin/activemq.jar
  [6]: 6486 org.apache.catalina.startup.Bootstrap
  [7]: 3276 org.apache.catalina.startup.Bootstrap
  [8]: 8477 org.logstash.Logstash
  [9]: 28349 org.apache.catalina.startup.Bootstrap
6

找到需要修改的类路径 反编译并重定向到某个目录下

jad --source-only com.yaoxun.system.controller.HealthVideoController > /temp/HealthVideoController.java

修改代码

            public Result view(String id) {
	log.info("我是新来的"); 
                try {
             HealthVideo healthVideo = this.healthVideoService.view(id);
                    return new Result(CodeConst.SUCCESS, "成功", (Object)healthVideo);
                }
                catch (PBMException e) {
             log.error((Object)e.getMessage());
                    return new Result(CodeConst.FAIL, "失败");
                }
            }

sc查找加载UserController的ClassLoader

sc -d *HealthVideoController | grep classLoaderHash
classLoaderHash   7a040e96

下面编译之前修改的java文件

mc -c 7a040e96 /temp/HealthVideoController.java -d /temp

重新加载class

redefine /temp/com/yaoxun/system/controller/HealthVideoController.class

看看效果吧
调用接口 成功打印

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号