关于javaagents的教程

我想了解一些关于javaagents的知识,但是研究并不容易。 结果大部分是指JADE 。 我知道Java代理可以意味着两件事情:

  1. 在Java中编程的代理是分布式系统的代理概念的化身。
  2. 一个用于扩展JVM工作的低级软件组件,如分析器,代码覆盖工具等

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

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

第二个案例谈到了Java Instrumentation API – 这个链接指向一个相当具有描述性的Javadoc。

在这里,是如何创buildJava工具代理的完整说明和示例 。

主要概念是:

  1. 实现一个静态premainpremain )方法,如下所示:

     import java.lang.instrument.Instrumentation; class Example { public static void premain(String args, Instrumentation inst) { ... } } 
  2. 创build一个清单文件(比如说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 

第二点描述的javaagent很less有用的资源。

  • 如何指导编写一个javaagent
  • 驯服Javaagents – 介绍在BCN JUG 2015年
  • java.lang.instrument的API文档