我想学习一些关于javaagents的东西,但是研究并不容易。大多数结果是指JADE
. 我知道 java 代理可能意味着两件事:
- 用 Java 编程的代理是分布式系统代理概念的化身。
- 用于增强 JVM 工作的低级软件组件,例如分析器、代码覆盖工具等
我在这里找到了类似的问题,但不幸的是它也指的是版本 1。
你知道第 2 版中关于 javaagent 的任何文章、初学者教程、示例项目吗?我在这里找到了一个,但我正在寻找更多。
第二种情况是关于Java Instrumentation API - 这个链接指向一个 Javadoc,它是相当具有描述性的。
这里是完整的说明和如何创建 java 检测代理的示例。
主要概念是:
实现一个静态premain
(类似于main
)方法,如下所示:
import java.lang.instrument.Instrumentation;
class Example {
public static void premain(String args, Instrumentation inst) {
...
}
}
创建一个清单文件(例如manifest.txt
),将此类标记为 pre-main 执行。它的内容是:
Premain-Class: Example
编译该类并将该类打包成一个JAR
存档:
javac Example.java
jar cmf manifest.txt yourAwesomeAgent.jar *.class
使用参数执行 JVM -javaagent
,如下所示:
java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
如第 2 点所述,很少有对 javaagent 有用的资源。