java agent开发

布满荆棘的人生 2023-01-09 15:52 225阅读 0赞

本文主要记录下如何创建一个简单的java Agent,并配置运行。

1.创建Agent类

  1. package com.java4all.grouth.agent;
  2. import java.lang.instrument.Instrumentation;
  3. /**
  4. * @description: java Agent
  5. * @author: IT云清
  6. */
  7. public class MyAgent {
  8. public static void premain(String agentArgs, Instrumentation instrumentation) {
  9. System.out.println("This is MyAgent,args:"+agentArgs);
  10. }
  11. }

2.MANIFEST.MF 配置文件

这里在src/main/resources/META-INF/下创建一个MANIFEST.MF文件,指定Agent class和版本相关信息。注意最后一行需要一个空行,否则idea会报错。

  1. Manifest-Version: 1.0
  2. Premain-Class: com.java4all.grouth.agent.MyAgent
  3. Can-Redefine-Classes: true
  4. Can-Retransform-Classes: true

3.打包配置

在pom.xml中配置打包信息

  1. <build>
  2. <finalName>my-agent</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. </plugin>
  8. <plugin>
  9. <groupId>org.apache.maven.plugins</groupId>
  10. <artifactId>maven-jar-plugin</artifactId>
  11. <version>2.3.2</version>
  12. <configuration>
  13. <archive>
  14. <index>true</index>
  15. <manifestFile>
  16. src/main/resources/META-INF/MANIFEST.MF
  17. </manifestFile>
  18. <manifest>
  19. <addDefaultImplementationEntries/>
  20. </manifest>
  21. </archive>
  22. </configuration>
  23. </plugin>
  24. <plugin>
  25. <groupId>org.apache.maven.plugins</groupId>
  26. <artifactId>maven-compiler-plugin</artifactId>
  27. <configuration>
  28. <source>1.8</source>
  29. <target>1.8</target>
  30. </configuration>
  31. </plugin>
  32. </plugins>
  33. </build>

4.打包

  1. mvn clean package

会生成一个jar
在这里插入图片描述

5.应用

这里以idea为例,配置VM options参数
在这里插入图片描述
参数格式为:-javaagent:/Agent的jar路径=参数

例如:

  1. -javaagent:/Users/ityunqing/mycode/grouth/target/my-agent.jar=IT云清

项目启动后,就会看到,在main方法执行前,执行了premain方法。
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,225人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SkyWalking之Java Agent

    Skywalking介绍 Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2

    相关 java agent

    一、基本概念 `Java agent`是在`JDK1.5`引入的,是一种可以动态修改`Java`字节码的技术。java类编译之后形成字节码被`JVM`执行,`JVM`在执

    相关 Java Agent

    一、什么是 Java Agent ? 笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控与

    相关 AGENT开发

    花了一两天时间测试和整理一下。 用net-snmp扩展MIB库,实现方法可归结为四种: 1)一是静态库方式,通过修改配置头文件,在相应地方包含新引入的mib模块的.c和.h

    相关 java agent基础原理

    本文重点讲述javaagent的具体实现,因为它面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTI