网络知识 娱乐 项目动态修改Properties(运行时)

项目动态修改Properties(运行时)

项目动态修改Properties(运行时)

动态配置property,以前老项目没有用过阿波罗,又想不重启虚拟机修改配置文件,此功能帮你实现不重启虚拟机直接改动jvm里的配置文件。

把agent通过jps出来的进程id用命令把jar包注入到jvm里(Attaching Java Agent)

java -cp /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar:dynamic-agent-0.0.1-SNAPSHOT.jar com.agent.StartApp LoadAgent 79056 /Users/steven/temp/dynamic-agent-0.0.1-SNAPSHOT.jar

默认会占用本地9999端口 目前还未加入配置端口项 这里需要指定服务器的tools.jar 因为VirtualMachine类的工具在这个jar里

dynamic-agent-0.0.1-SNAPSHOT.jar是项目打完包后的

LoadAgent 46623 /Users/steven/temp/dynamic-agent-0.0.1-SNAPSHOT.jar

LoadAgent 是指定要调用的类 这里参数默认配置它即可

46623 是进程号

/Users/steven/temp/dynamic-agent-0.0.1-SNAPSHOT.jar 指定项目打包后的jar包路径和上面的jar包一样

本地调试maven配置

这里是列表文本默认tools.jar 如果您要倒入到项目需要用本地的jdk路径我这里默认把路径写死了,win用户自行修改

<dependency>
 <groupId>com.sun</groupId>
 <artifactId>tools</artifactId>
 <version>1.7</version>
 <scope>system</scope><systemPath>/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar</systemPath>
</dependency>

注意:

如果你的生产jdk是小于当前agent的jdk一定要降到比生产小,不要问为什么。你懂得。

此项目只能修改系统的properties配置。

默认通过两种方式修改支持jconsole通过操作修改和telnet方式修改。

将agent attach进入到你到项目进程

查看成功标示

jsonsole控制台(链接到你启动到项目)

这是项目中写死到MBean(com.steven:type=NewBiAgentManagement)找到并配置动态属性值设置详细:

第一步:

第二步:

通过telnet的方式:

Gitee : https://gitee.com/coderunning/dynamic-property