简要描述
java agent 技术 不同于AOP、不需要在原程序包中增加或者修改代码,而是单独做一个程序jar,实现对目标程序jar的修改,可以在jvm程序启动前、或者运行时 对类进行拦截、修改类中的实现(实际是修改jvm方法区中class字节码)
两种方式实现
(1)目标jar启动时修改
在 目标jar包启动时 使用命令 java -javaagent:xx-agent.jar -jar 目标程序.jar ,对目标程序进行修改。
(2)目标jar运行时修改
使用attach(目标jar运行的进程id)
// 15186表示目标jar进程的PID
VirtualMachine vm = VirtualMachine.attach("15186");
try {
// 指定自己编写的JavaAgent的jar包路径
vm.loadAgent(".../xx-agent.jar");
} finally {
vm.detach();
}
网上参考1
原文