jvm-sandbox:基础了解及demo演示
Posted One Tester
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 "";
预览
: 访问接口返回结果如下
二、代码编写-自定义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'
五、资源链接
以上是关于jvm-sandbox:基础了解及demo演示的主要内容,如果未能解决你的问题,请参考以下文章