#${sandbox_home}/bin/.sandbox.sh
com.alibaba.jvm.sandbox.core.CoreLauncher.main(jvm_pid,sandbox-agent.jar,【home=${SANDBOX_HOME_DIR};token=${token};server.ip=${TARGET_SERVER_IP};server.port=${TARGET_SERVER_PORT};namespace=${TARGET_NAMESPACE}】-》
com.alibaba.jvm.sandbox.agent.agentmain.featureMap
#启动sandbox之后的控制台日志
com.alibaba.jvm.sandbox.api.resource.ConfigInfo
#${sandbox_home}/cfg/sandbox.properties
# switch the sandbox can enhance system class
unsafe.enable=true
## user_module=~/.sandbox-module;
user_module=D:/work/workspace/jvm-sandbox-repeater/target/repeater;
#${repeater_home}/cfg/repeater.properties
# 录制消息投递地址
broadcaster.record.url=http://127.0.0.1:8001/facade/api/record/save
# 回放结果投递地址
broadcaster.repeat.url=http://127.0.0.1:8001/facade/api/repeat/save
# 回放消息取数据地址
repeat.record.url=http://127.0.0.1:8001/facade/api/record/%s/%s
# 配置文件拉取地址
repeat.config.url=http://127.0.0.1:8001/facade/api/config/%s/%s
# 心跳上报配置
repeat.heartbeat.url=http://127.0.0.1:8001/module/report.json
# 是否开启脱机工作模式
repeat.standalone.mode=false
# 是否开启spring advice拦截
repeat.spring.advice.switch=true;'
#${repeater_home}/cfg/repeater-config.json
com.alibaba.jvm.sandbox.repeater.plugin.domain.RepeaterConfig
@RequestMapping("/config/{appName}/{env}") public RepeaterResult<RepeaterConfig> getConfig(@PathVariable("appName") String appName, @PathVariable("env") String env) { ModuleConfigParams params = new ModuleConfigParams(); params.setAppName(appName); params.setEnvironment(env); // RepeaterResult<ModuleConfigBO> result = moduleConfigService.query(params); RepeaterConfig config = new RepeaterConfig(); List<Behavior> behaviors = Lists.newArrayList(); config.setPluginIdentities(Lists.newArrayList("http", "java-entrance", "java-subInvoke", "mybatis", "ibatis")); // 回放器 config.setRepeatIdentities(Lists.newArrayList("java", "http")); // 白名单列表 config.setHttpEntrancePatterns(Lists.newArrayList("^/regress/slogan.*$","^/dayu/api/.*$")); // java入口方法 behaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "getRegress")); config.setJavaEntranceBehaviors(behaviors); List<Behavior> subBehaviors = Lists.newArrayList(); // java调用插件 subBehaviors.add(new Behavior("com.caifu.qa.dayu.common.utils.DayuRandomUtils", "getNRandom")); subBehaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "getRegressInner")); subBehaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "findPartner")); subBehaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "slogan")); config.setJavaSubInvokeBehaviors(subBehaviors); config.setUseTtl(true); // return RepeaterResult.builder().success(result.isSuccess()).message(result.getMessage()).data(result.getData().getConfigModel()).build(); return RepeaterResult.builder().success(true).message("录制成功").data(config).build();