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了吧)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifestEntries>
<Project-name>${project.name}</Project-name>
<Project-version>${project.version}</Project-version>
<Premain-Class>com.tuling.agent.Agent</Premain-Class>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
<Boot-Class-Path>javassist-3.18.1-GA.jar</Boot-Class-Path>
</manifestEntries>
</archive>
<skip>true</skip>
</configuration>
</plugin>
插件

打包之后

测试




Java Agent(上)的更多相关文章
- java agent
cmd使用java -help可以看到关于agent参数: -agentlib:<libname>[=<选项>] 加载本机代理库 <libname>, 例如 -ag ...
- 深入浅出Java探针技术1--基于java agent的字节码增强案例
Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改 ...
- 探秘 Java 热部署三(Java agent agentmain)
前言 让我们继续探秘 Java 热部署.在前文 探秘 Java 热部署二(Java agent premain)中,我们介绍了 Java agent premain.通过在main方法之前通过类似 A ...
- 探秘 Java 热部署二(Java agent premain)
# 前言 在前文 探秘 Java 热部署 中,我们通过在死循环中重复加载 ClassLoader 和 Class 文件实现了热部署的功能,但我们也指出了缺点-----不够灵活.需要手动修改文件等操作. ...
- JVM插庄之二:Java agent基础原理
javaagent 简介 Javaagent 只要作用在class被加载之前对其加载,插入我们需要添加的字节码. Javaagent面向的是我们java程序员,而且agent都是用java编写的,不需 ...
- Java 调式、热部署、JVM 背后的支持者 Java Agent
我们平时写 Java Agent 的机会确实不多,也可以说几乎用不着.但其实我们一直在用它,而且接触的机会非常多.下面这些技术都使用了 Java Agent 技术,看一下你就知道为什么了. -各个 J ...
- java agent 详细介绍 -javaagent参数
java agent 详细介绍 简介 java agent是java命令的一个参数.参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的MAN ...
- java agent技术原理及简单实现
注:本文定义-在函数执行前后增加对应的逻辑的操作统称为MOCK 1.引子 在某天与QA同学进行沟通时,发现QA同学有针对某个方法调用时,有让该方法停止一段时间的需求,我对这部分的功能实现非常好奇,因此 ...
- [转] Java Agent使用详解
以下文章来源于古时的风筝 ,作者古时的风筝 我们平时写 Java Agent 的机会确实不多,也可以说几乎用不着.但其实我们一直在用它,而且接触的机会非常多.下面这些技术都使用了 Java Agent ...
随机推荐
- 11 . Python3之异常,调试和测试
12.Python3入门之异常.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修 ...
- seo网站优化收录过少的病因分析-智狐seo顾问
seo网站优化收录过少的病因分析 很多网站优化人员都了解,一个网站收录的重要性,企业网站要想可以在百度中占据一个良好的排名,获取的权重更高,那么网站收录自然就上去了,很多站长们在操作的过程中就会出现不 ...
- Alpha冲刺 —— 个人总结
这几日Alpha冲刺的个人进展汇总,收获满满,我成长了. 我们的团队博客链接,团队作业第五次--Alpha冲刺 4.30 今日进展 改进数据库:字段命名重新规范,在record表中添加confirme ...
- Rocket - tilelink - Metadata
https://mp.weixin.qq.com/s/Dyb1XipJtdhGa9mktXXjCg 简单介绍Metadata的实现. 1. 基本介绍 Metadata是一个Bun ...
- Rocket - tilelink - AsyncCrossing
https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg 介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...
- Redis 入门到分布式 (五) Redis持久化的取舍和选择
个人博客网:https://wushaopei.github.io/ (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用 ...
- Java实现 LeetCode 791 自定义字符串排序(桶排序)
791. 自定义字符串排序 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那 ...
- Java实现N*N矩阵旋转(360度)
N*N矩阵旋转 Description 给你一个n*n的矩阵,你的任务是将它逆时针旋转角度d. [输入] 输入的第一个数为T,表示接下来有T组数据. 每组数据的格式如下: 第一行为两个整数n,d.1& ...
- Java实现约瑟夫环问题
约瑟夫环问题起源于一个犹太故事.约瑟夫环问题的大意如下: 罗马人攻占了桥塔帕特,41个人藏在一个山洞中躲过了这场浩劫.这41个人中,包括历史学家Josephus(约瑟夫)和他的一个朋友.剩余的39个人 ...
- Java实现复数运算
1 问题描述 编程实现两个复数的运算.设有两个复数 和 ,则他们的运算公式为: 要求:(1)定义一个结构体类型来描述复数. (2)复数之间的加法.减法.乘法和除法分别用不用的函数来实现. (3)必须使 ...