关于javaagents的教程 [已关闭]

2022-08-31 17:34:15

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

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

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

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


答案 1

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

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

主要概念是:

  1. 实现一个静态(类比 )方法,如下所示:premainmain

    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. 使用参数执行 JVM,如下所示:-javaagent

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

答案 2

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


推荐