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'

五、资源链接

文章中相关代码demo

以上是关于jvm-sandbox:基础了解及demo演示的主要内容,如果未能解决你的问题,请参考以下文章

基础的强化学习(RL)算法及代码详细demo

快速了解阿里开源中间件动态非侵入AOP解决方案 JVM-Sandbox

使用Marbles弹珠游戏模拟区块链资产转移

构建Flink工程及demo演示

演示demo开发问题及解决方案集锦

JVM-Sandbox核心技术实现和架构,你想知道的都在这里了