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

原文地址:https://www.cnblogs.com/moonpool/p/14510129.html