一尘不染

关于javaagents的教程

java

我想学习有关Javaagents的知识,但是研究并不容易。结果大部分是指JADE。我知道Java代理可以表示两件事:

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

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

您是否了解任何有关版本2中的javaagent的文章,初学者教程和示例项目?我在这里找到了,但我正在寻找更多。


阅读 235

收藏
2020-09-08

共1个答案

一尘不染

第二种情况是关于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),以将该类标记为在主执行前执行。其内容是:

    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
    
2020-09-08