java 什么是agent_Java Agent(上)

1、java agent是什么?

—》对用户透明,不侵入用户业务代码。让java虚拟机加载agent jar

2、java agent有什么用?

—>应用场景例如:调用链追踪项目,在用户无感知的情况下,记录日志。目前业内使用该技术的有,SkyWalking,Pinpoint(这个监控的粒度更小)

-各个 Java IDE 的调试功能,例如 eclipse、IntelliJ ;

-热部署功能,例如 JRebel、XRebel、 spring-loaded;

-各种线上诊断工具,例如 Btrace、Greys,还有阿里的 Arthas;

-各种性能分析工具,例如 Visual VM、JConsole 等

3、java agent的实现原理?

4、 入门案例

4.1、 如何制造自己第一个java agent jar包

4.1.1、 第一步:我们需要一个插件来帮助我们生成带特定格式的MAINIFEST.MF的jar

4.1.2、 第二步:在启动项目的时候,在jvm参数中添加 -javaagent: *ving-agent-0.0.1-SNAPSHOT.jar (在jvm上先加载agent包)

(偷偷地问)特定格式的MAINIFEST.MF是怎样的?需要包括下面的内容

Manifest-Version: 1.0

Can-Redefine-Classes: true

Can-Retransform-Classes: true

Premain-Class: cn.think.in.java.clazz.loader.asm.agent.PreMainTraceAgent

(再偷偷地问),难度每次都让我手动去弄这个文件,我觉得很麻烦呀,有没一个工具能帮我们将agent项目打包成包含MAINIFEST.MF的jar?

—–》对,你猜对了,真的有这个工具。那就是maven插件。(说到打包,肯定要想到maven或者gradle了吧)

org.apache.maven.plugins

maven-jar-plugin

2.2

${project.name}

${project.version}

com.tuling.agent.Agent

true

true

javassist-3.18.1-GA.jar

true

插件

64549ba5760ef8a65d8798c6f11c3802.png

打包之后

9cf7b536d87d35727ed6c8e8974156a6.png

测试

7cb5f9c38e04ed48e40e5a28864f4a1b.png

841e641be79c57d1c6ca7898df7fcdc4.png

ce464b6fc5fae97d674735ad77c24fd3.png

4f55c2b789f5fed5a0511ff12a1486ea.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值