首页 > 编程语言 > 详细

java agent技术

时间:2020-03-22 00:19:01      阅读:61      评论:0      收藏:0      [点我收藏+]

Java 字节码技术

一、Java Agent

  1. Javaagent是java1.5以后引入的特性,其主要作用是在class被加载之前对其加载,以插入我们想要修改的代码

技术分享图片

  1. javaagent最后展示形式是一个jar包,具有以下特性
  • 必须在META-INF/MANIFEST.MF中指定Premain-Class设定agent启动类
  • 在agent启动类中写启动方法public static void premain(String agentArgs, Instrumentation inst){}
  • 不可直接运行,只能通过jvm参数-javaagent:xxx.jar附着于其他JVM进程运行

3.入门实例

3.1 编写Agent启动类

  public class TestAgent {
        public static void premain(String agentArgs, Instrumentation inst){
            System.out.println("premain start");
        }
    }

3.2 编写pomx.xml文件并将Agent启动类打包成jar文件
xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> </manifest> <manifestEntries> <Premain-Class>com.mmc.agent.TestAgent</Premain-Class> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build>
使用package命令打包。

3.3 编写一个main方法,并运行

  public class Main {

    public static void main(String[] args) {
        System.out.println("start");
    }
}

增加启动参数:-javaagent:D:\webProjects\dubbo-master\dubbo-study-parent\java-agent\target\java-agent-1.0-SNAPSHOT.jar
路径为第二步打包的jar包的文件路径

3.4 运行情况

premain start
start

java agent技术

原文:https://www.cnblogs.com/javammc/p/12543267.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!