Java Agent的神奇魔力
有人会问Java Agent是什么,它是Java的代理程序?这个代理程序可以实现哪些能力?今天我们就来谈一谈它。Java Agent是从JDK1.5开始引入的,其实也算是一个比较老的技术了,作为Java的开发工程师,我们常用的命令之一就是java命令,而javaagent其实就是java命令的一个参数,并且需要再参数后面制定一个jar包,但这个jar包需要同时满足下面两个条件:
- 在META-INF目录下的MANIFEST.MF文件中必须指定premain-class配置项。
- premain-class配置项指定的类必须提供了premain()方法。
当Java虚拟机启动时,在执行main()函数之前,Java虚拟机会先找到-javaagent参数指定的jar包,然后再执行premain-class中的premain()方法,简单用一句话来概括其功能的话就是:main()函数前的一个拦截器。
------------------------------------------------------------------------------------------------------------
如何来使用Java Agent,它的神奇魔力究竟是什么呢?大致的步骤如下:
- 定义一个 MANIFEST.MF 文件,必须包含 Premain-Class 配置项,通常也会加入Can-Redefine-Classes 和 Can-Retransform-Classes 配置项。
- 创建一个Premain-Class 配置项指定的类,类中包含 premain() 方法,逻辑由用户定义。
- 将 Premain-Cla