56

我想学习一些关于javaagents的东西,但是研究并不容易。大多数结果是指JADE. 我知道 java 代理可能意味着两件事:

  1. 用 Java 编程的代理是分布式系统代理概念的化身。
  2. 用于增强 JVM 工作的低级软件组件,例如分析器、代码覆盖工具等

我在这里找到了类似的问题,但不幸的是它也指的是版本 1。

你知道第 2 版中关于 javaagent 的任何文章、初学者教程、示例项目吗?我在这里找到了一个,但我正在寻找更多。

4

2 回答 2

87

第二种情况是关于Java Instrumentation API - 这个链接指向一个 Javadoc,它是相当具有描述性的。

这里是完整的说明和如何创建 java 检测代理的示例

主要概念是:

  1. 实现一个静态premain(类似于main)方法,如下所示:

    import java.lang.instrument.Instrumentation;
    
    class Example {
        public static void premain(String args, Instrumentation inst) {
            ...
        }
    }
    
  2. 创建一个清单文件(例如manifest.txt),将此类标记为 pre-main 执行。它的内容是:

    Premain-Class: Example
    
  3. 编译该类并将该类打包成一个JAR存档:

    javac Example.java
    jar cmf manifest.txt yourAwesomeAgent.jar *.class
    
  4. 使用参数执行 JVM -javaagent,如下所示:

    java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
    
于 2012-08-10T09:15:46.337 回答
6

如第 2 点所述,很少有对 javaagent 有用的资源。

于 2017-03-30T08:21:54.530 回答