当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

JVM-Sandbox

​动态非侵入 AOP 解决方案
授权协议 LGPL
开发语言 Java SHELL
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 国产
投 递 者 席俊达
操作系统 跨平台
开源组织 阿里巴巴
适用人群 未知
 软件概览

JVM-Sandbox,JVM 沙箱容器,一种基于 JVM 的非侵入式运行期 AOP 解决方案。

JVM-SANDBOX 的核心功能:

实时无侵入 AOP 框架

在常见的 AOP 框架实现方案中,有静态编织和动态编织两种。

  1. 静态编织
    静态编织发生在字节码生成时根据一定框架的规则提前将 AOP 字节码插入到目标类和方法中,实现 AOP;

  2. 动态编织
    动态编织则允许在 JVM 运行过程中完成指定方法的 AOP 字节码增强。常见的动态编织方案大多采用重命名原有方法,再新建一个同签名的方法来做代理的工作模式来完成 AOP 的功能(常见的实现方案如 CgLib),但这种方式存在一些应用边界:

    • 侵入性
      对被代理的目标类需要进行侵入式改造。比如:在 Spring 中必须是托管于 Spring 容器中的 Bean

    • 固化性
      目标代理方法在启动之后即固化,无法重新对一个已有方法进行 AOP 增强

热部署特性

还有一些实现 AOP 的方式是通过类似热部署的方式完成,但现有的热部署实现方案也存在一些应用边界:

  1. 性能折损巨大

  2. 对 JVM 存在侵入性

  3. 必须启动时显式开启

基于此通过 JDK 6 所提供的 Instrumentation-API 实现了利用 HotSwap 技术在不重启 JVM 的情况下实现对任意方法的 AOP 增强。而且性能开销还在可以接受的范围之内。

动态可插拔容器

为了实现沙箱模块的动态热插拔,容器客户端和沙箱动态可插拔容器采用 HTTP 协议进行通讯,底层用 Jetty8 作为 HTTP 服务器。

JVM 沙箱都有哪些可能的应用场景

  • 线上故障定位

  • 线上系统流控

  • 线上故障模拟

  • 方法请求录制和结果回放

  • 动态日志打印

  • 安全信息监测和脱敏

除此之外,JVM 沙箱还能帮助你做很多很多……

  • 菜鸟一枚,单纯总结一下试用过程。其他使用过程帖子参考https://blog.csdn.net/Testerhomee/article/details/124123352 克隆jvm-sandbox-repeater源码到本地; 修改PathUtils下(repeater-plugin-core)获取插件路径的方法,将"/plugins"改为File.separator +“plugins”,"/

  • 我们来编写一个非常非常简单的黑名单用户的案例。 编写一个方法,通过用户编号获取用户信息,但是在黑名单内的用户访问的话,会抛出一个异常:用户鉴定没有权限!,非黑名单的用户则可以访问用户信息。 构建一个客户端demo 首先我们构建一个springboot的demo,具体环境就搭建了,直接上主流程代码: /** * 获取用户信息 * @author liukaixiong * @Email liu

 相关资料
  • 本文向大家介绍C++编写非侵入式接口,包括了C++编写非侵入式接口的使用技巧和注意事项,需要的朋友参考一下 终于写到c++的非侵入式接口了,兴奋,开心,失望,解脱,…… 。在搞了这么多的面向对象科普之后,本人也已经开始不耐烦,至此,不想做太多阐述。 虽然,很早就清楚怎么在c++下搞非侵入式接口,但是,整个框架代码,重构了十几次之后,才终于满意。支持给基本类型添加接口,好比int,char,cons

  • 我必须构建一个客户机/服务器应用程序,其中服务器端只是一个将数据从一个客户机传递到另一个客户机的应用程序。 客户端将用C#编写,如果可能的话,我想用NodeJS编写服务器。我会尽力解释这背后的想法。 如果您将此应用程序视为1vs1游戏,最好对此进行解释。因此,多个客户端可以连接到服务器。在Player1/Player2上下文中,一个客户端将与另一个客户端匹配。 Player1可以移动。例如,一个将

  • 本文向大家介绍JVM 方法调用之动态分派(详解),包括了JVM 方法调用之动态分派(详解)的使用技巧和注意事项,需要的朋友参考一下 1. 动态分派 一个体现是重写(override)。下面的代码,运行结果很明显。 最终输出sub : f(); 那么虚拟机是怎么做到动态分派的呢? 不同的虚拟机有不同的实现,最常用的是使用虚方法表(Virtual Method Table) 2. 虚方法表 对于Sup

  • 本文向大家介绍Asp.Net Core轻量级Aop解决方案:AspectCore,包括了Asp.Net Core轻量级Aop解决方案:AspectCore的使用技巧和注意事项,需要的朋友参考一下 什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect-oriented programming) 解决

  • 我有一个php文件,代码如下,我收到错误: 严格的标准:非静态方法LinkCore::getImageLink()不应该被静态调用,假设$this从不兼容的上下文中...... 但如果我改变这一行: 具有 我明白了 解析错误:语法错误,意外'- 如果我用“publicstatic”声明所有函数,我会得到错误“致命错误:无法在类HTMLTemplateCustomPdf中使非静态方法HTMLTemp

  • 循环调用一组函数,动态引入script,在检查元素中的head中script显示已经被引入,但是onload函数没有被执行,并且报错如下: