项目动态修改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