2. jvm-sandbox之结构和状态

参考:https://github.com/alibaba/jvm-sandbox/wiki/CONFIG

结构说明:

./sandbox/bin/sandbox.sh

沙箱的客户端脚本,用于启动、管理沙箱

./sandbox/cfg/

./sandbox/cfg/version

存放沙箱容器的版本号,当你不确定当前容器的版本的时候可以通过这个文件进行核对

./sandbox/cfg/sandbox.properties

存放沙箱容器的配置信息,配置文件只会在沙箱容器启动的时候加载一次。他的详细配置解释可以单独见配置文件解释

./sandbox/cfg/sandbox-logback.xml

沙箱容器选用Logback作为他的日志框架,所以这里开放日志配置文件允许进行个性化的日志配置

./sandbox/lib/

沙箱主程序的库包目录,这里存放的是沙箱工程的主程序,不能随意的删除、改名和移动!

./sandbox/module/

沙箱系统模块目录,由配置项system_module进行定义。用于存放沙箱通用的管理模块,比如用于沙箱模块管理功能的module-mgr模块,未来的模块运行质量监控模块、安全校验模块也都将存放在此处,跟随沙箱的发布而分发。

系统模块不受刷新(-f)、**强制刷新(-F)功能的影响,只有容器重置(-R)**能让沙箱重新加载系统模块目录下的所有模块。

${HOME}/.sandbox-module/

沙箱用户模块目录,由sandbox.properties的配置项user_module进行定义,默认为${HOME}/.sandbox-module/。一般用于存放用户自研的模块。自研的模块经常要面临频繁的版本升级工作,当需要进行模块动态热插拔替换的时候,可以通过**刷新(-f)或强制刷新(-F)**来完成重新加载。

状态说明:

加载

模块被沙箱正确加载,沙箱将会允许模块进行命令相应、代码插桩等动作

卸载

沙箱不会再看到该模块,之前给该模块分配的所有资源都将会被回收,包括模块已经侦听事件的类都将会被移除掉侦听插桩,干净利落不留后遗症

激活

模块加载成功后默认是冻结状态,需要代码主动进行激活。模块只有在激活状态下才能监听到沙箱事件

冻结

模块进入到冻结状态之后,之前侦听的所有沙箱事件都将被屏蔽。需要注意的是,冻结的模块不会退回事件侦听的代码插桩,只有delete()、wathcing()或者模块被卸载的时候插桩代码才会被清理

 

 

 

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