jvm-sandbox:基础了解及demo演示

一、基础准备-被测应用

准备:先创建一个基础的SpringBoot项目并打jar包后在服务器启动
在这里插入图片描述

@RestController
public class MyController {

    @GetMapping("/index")
    public String index() {
        return "SANDBOX TEST";
    }

    @GetMapping("/test")
    public String test() {
        try{
            calce();
        }catch (Exception e){
            return "Has Error";
        }
        return "No Error";
    }

    public String calce(){
        return "";
    }
}

预览: 访问接口返回结果如下
index返回
在这里插入图片描述

二、代码编写-自定义Module

maven依赖:创建一个正常的maven项目,在依赖pom.xml文件中添加sandbox的父级依赖。

<parent>
    <groupId>com.alibaba.jvm.sandbox</groupId>
    <artifactId>sandbox-module-starter</artifactId>
    <version>1.2.0</version>
</parent>

代码编写:实现一个简单改变方法返回值的功能,并打包成jar包待后面使用。

@MetaInfServices(Module.class)
@Information(id = "change-resp")
public class Demo implements Module {
    private final static String CLASS_NAME = "com.onetester.springbootdemo.MyController";
    private final static String METHOD_NAME = "index";

    @Resource
    private ModuleEventWatcher moduleEventWatcher;

    @Command("changeResp")
    public void changeResp(){
        new EventWatchBuilder(moduleEventWatcher).onClass(CLASS_NAME).onBehavior(METHOD_NAME).onWatch(new AdviceListener(){
            protected void afterReturning(Advice advice) throws Throwable {
                ProcessController.returnImmediately(advice.getReturnObj() +": now changed");
            }

        });
    }
}

在这里插入图片描述

三、jvm-sandbox安装及基础命令

下载及安装

-- 下载
wget http://ompc.oss-cn-hangzhou.aliyuncs.com/jvm-sandbox/release/sandbox-stable-bin.zip
-- 解压
unzip sandbox-stable-bin.zip

在这里插入图片描述
相关命令

命令作用
./sandbox.sh -p pid 挂载sandbox到指定进程
../sandbox.sh -p pid 'xxxx'执行对应的指令 xxx这里代表指令
./sandbox.sh -p pid -S 停止挂载
./sandbox.sh -p pid -R 重新挂载
./sandbox.sh -p 8043 -l显示挂载的module

四、jvm-sandbox demo演示

4.1、改变方法返回

上传jar包:将前面自定义写的一个Module打包jar包后上传到sandbox-module目录下
在这里插入图片描述
查看端口:使用jps -ml命令查看启动的java项目进程
在这里插入图片描述
挂载模块并执行命令
在这里插入图片描述
查看结果
在这里插入图片描述

4.2、异常注入

异常注入:sandbox官方提供了基础的方法异常的代码,可见源码中的DebugRalphModule类,且对应jar包在下载中的example目录下。
在这里插入图片描述
启动模块:将example目录下的sandbox-debug-module.jar文件复制到sandbox-module目录下,并确认挂载的模块存在即可
在这里插入图片描述

注入异常: 给calce注入异常,并使其返回异常,从/test接口返回结果即可看出是否有异常。

./sandbox.sh -p 8043 -d 'debug-ralph/wreck?class=com.onetester.springbootdemo.MyController&method=calce&type=IOException'

在这里插入图片描述

在这里插入图片描述

五、资源链接

文章中相关代码demo
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One Tester

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值