jvm-sandbox源码笔记之工程介绍

449 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天。点击查看活动详情

一、前言

近期在工作中接触到了sandbox这个工具,感觉很是强大,所以看了下源码,文章作为笔记,方便以后阅读。文章如有错误还请指正。

二、项目架构

图片来源 github.com/alibaba/jvm… image.png

三、项目模块介绍

  • sandbox-agent: agent模块 启动一个代理程序,初始化一个jetty服务接受请求等。 由sandbox-core的main方法启动
  • sandbox-api:sandbox的基本模型定义 如通用的注解、Event等通用api,核心的 EventListener 也是定义在这个模块
  • sandbox-common-api: 通用的注解和接口等
  • sandbox-core: sandbox核心模块 main方法启动agent模块 定义了核心的类加载器和核心流程实现(如 ClassFileTransformer的实现、加载定义的jar包、 核心工具的实现ACM工具... and等等`) 属于核心模块
  • sandbox-debug-module: 看起来是个测试用的模块
  • sandbox-mgr-module: 沙箱管理模块 接受 外界的 命令 如listdetailflush
  • sandbox-mgr-provider: 自定义模块加载的回调函数实现,在该实现中可以进行文件解密和签名验证等操作
  • sandbox-module-starter: starter 空的项目 pom文件中定义了模块版本
  • sandbox-provider-api: 自定义模块加载的回调函数api
  • sandbox-spy: sandbox的间谍模块 Spy的方法会通过asm插桩到各个需要增强的目标类中

四、项目相关技术和概念

  • JVMTI
  • java-agent
  • asm
  • jetty