• 1. jvm-sandbox之小试牛刀


    一、编写一个简单的加法接口

    二、使用工具验证

     将上面的接口打包,并验证。

    三、编写module

    3.1 创建一个maven工程

    在pom.xml添加parent:

    1 <parent>
    2     <groupId>com.alibaba.jvm.sandbox</groupId>
    3     <artifactId>sandbox-module-starter</artifactId>
    4     <version>1.3.1</version>
    5   </parent>

    添加module class, 将sum的返回值,固定为50

     1 package org.module;
     2 
     3 import com.alibaba.jvm.sandbox.api.Information;
     4 import com.alibaba.jvm.sandbox.api.Module;
     5 import com.alibaba.jvm.sandbox.api.ProcessController;
     6 import com.alibaba.jvm.sandbox.api.annotation.Command;
     7 import com.alibaba.jvm.sandbox.api.listener.ext.Advice;
     8 import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener;
     9 import com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder;
    10 import com.alibaba.jvm.sandbox.api.resource.ModuleEventWatcher;
    11 import org.kohsuke.MetaInfServices;
    12 
    13 import javax.annotation.Resource;
    14 
    15 @MetaInfServices(Module.class)
    16 @Information(id = "sumModule")
    17 public class SumModule implements Module {
    18     @Resource
    19     private ModuleEventWatcher moduleEventWatcher;
    20 
    21     @Command("changeSum")
    22     public void changeSum() {
    23         new EventWatchBuilder(moduleEventWatcher)
    24                 .onClass("mock.impl.SandBoxImpl")
    25                 .onBehavior("sum")
    26                 .onWatch(new AdviceListener() {
    27 
    28                     @Override
    29                     protected void afterReturning(Advice advice) throws Throwable {
    30                         ProcessController.returnImmediately(50);
    31                     }
    32                 });
    33 
    34     }
    35 }

    使用 mvn clean package 打包。生成jvmsandboxmodule-1.0-SNAPSHOT.jar

    四、安装jvm-sandbox

    1.下载最新的sandbox:https://ompc.oss.aliyuncs.com/jvm-sandbox/release/sandbox-stable-bin.zip

    2. 将其放入和应用相同的服务器上,使用命令unzip sandbox-stable-bin.zip解压

    3. 进入解压后的目录,使用命令./install-local.sh -p /home/mock/sandboxinstall 安装。其中/home/mock/sandboxinstall是安装目录

    五、使用

    5.1 将jvmsandboxmodule-1.0-SNAPSHOT.jar 拷贝到/home/mock/sandboxinstall/sandbox/sandbox-module下

    5.2  获取应用(第一节中的加法接口)的PID,假设是4274

    5.3 进入/home/mock/sandboxinstall/sandbox/bin,使用sandbox.sh 进行操作

    5.4 使用命令植入目标JVM

    ./sandbox.sh -p 4274

    5.5 查看当前modules

    ./sandbox.sh -p 4274 -l

    5.6 启用changeSum

    ./sandbox.sh -p 4274 -d sumModule/changeSum

    使用工具验证,发现结果变成50,不再是30

    5.7 关闭

    /sandbox.sh -p 4274 -S

    使用工具验证,发现结果恢复成30

  • 相关阅读:
    javascript 之异常处理try catch finally--05
    javascript 之基本包装类型--04
    javascript 之基本数据类型、引用数据类型区别--02
    javascript 之数据类型--01
    CSS3 object-fit 图像裁剪
    jQuery.extend 使用函数
    ios 不支持iframe 解决方案
    python常用代码积累
    mysql日志类型
    python中列表 元组 字符串如何互相转换
  • 原文地址:https://www.cnblogs.com/moonpool/p/14510129.html
Copyright © 2020-2023  润新知