请选择 进入手机版 | 继续访问电脑版
1188 0

APM监控一:javaAgent以及javassist [推广有奖]

  • 0关注
  • 0粉丝

小学生

64%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
23 点
帖子
2
精华
0
在线时间
14 小时
注册时间
2018-6-19
最后登录
2019-10-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
APM监控一:javaAgent以及javassistjavaAgent

javaAgent本质上是一种动态代理,它是通过字节码注入的方式,形成字节码转换器,在程序运行前,或者在程序运行时,修改代码字节码,然后载入类加载器,做到对代码的修改以及代理。

静态导入

在jvm加载原jar前,运行javaagent指定的premain方法,一般会在premain里面操作字节码,在方法前后加入代码,起到监控的作用

通过classPool和loader获取所有类池的类,然后通过类名获取类,然后通过类获取方法,在对其前后添加代码,或者添加属性,注解等。

动态导入

项目已经启动了,可以通过使用它的进程id,强行修改它的字节码,agent包需要声明Agent-Class,会调用agentmain方法,这个时候可以重新加载类

javassist

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。

可以强行改方法代码。

两者关系

一般两者通过结合使用,前者在侵入代码前生成字节码转换器,后者替换字节码,实现对程序无侵入性的监控。

注意:一定要知道代码的内部结构,要不没法改。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:javaagent

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 01:07