关于javaagents的教程

时间:2012-08-10 09:10:26

标签: java javaagents

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

  1. 用Java编程的代理是代理的化身 分布式系统的概念。
  2. 用于增强JVM工作的低级软件组件,例如 作为分析器,代码覆盖工具等
  3. 我发现了类似的问题here,但不幸的是它也引用了版本1.

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

2 个答案:

答案 0 :(得分:74)

第二个案例讨论Java Instrumentation API - 这个链接指向一个相当具有描述性的Javadoc。

这里是完整的指令和example of how to create java instrumentation agent

主要概念是:

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

    import java.lang.instrument.Instrumentation;
    
    class Example {
        public static void premain(String args, Instrumentation inst) {
            ...
        }
    }
    
  2. 创建一个清单文件(例如,manifest.txt),标记此类以进行预执行。其内容如下:

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

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

    java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
    

答案 1 :(得分:4)