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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM