我想学习有关Javaagents的知识,但是研究并不容易。结果大部分是指JADE。我知道Java代理可以表示两件事:
JADE
我在这里找到了类似的问题,但不幸的是,它也涉及版本1。
您是否了解任何有关版本2中的javaagent的文章,初学者教程和示例项目?我在这里找到了,但我正在寻找更多。
第二种情况是关于Java Instrumentation API的 -该链接指向一个描述性很强的Javadoc。
这是完整的说明以及如何创建Java工具代理的示例。
主要概念是:
实现一个静态premain(类似于main)方法,如下所示:
premain
main
import java.lang.instrument.Instrumentation;
class Example { public static void premain(String args, Instrumentation inst) { … } }
创建一个清单文件(例如manifest.txt),以将该类标记为在主执行前执行。其内容是:
manifest.txt
Premain-Class: Example
编译该类并将该类打包到JAR归档文件中:
JAR
javac Example.java
jar cmf manifest.txt yourAwesomeAgent.jar *.class
使用-javaagent参数执行JVM ,如下所示:
-javaagent
java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar