一、編寫一個簡單的加法接口
二、使用工具驗證
將上面的接口打包,並驗證。
三、編寫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