【实践】搭建agent服务+javassist字节码操作
来源:互联网 发布:mac怎么更新flash 编辑:程序博客网 时间:2024/05/16 10:15
简介
转载请注明出处:http://blog.csdn.net/supera_li/article/details/45846175
对于agent,是在vm启动,执行方法前,将字节码修改的服务代理。
对于javassist,是修改字节码具体实现。
这两个结合有什么用啊?写测试框架,不仅局限于此。
对于字节码:
字节码处理工具,bcel,asm与虚拟机指令打交道。Javassist采用java编码的方法处理字节码,性能相对较低,但方便。
官方:http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/
例子:
创建class http://blog.csdn.net/sadfishsc/article/details/9999169
拦截方法AOP http://yonglin4605.iteye.com/blog/1396494
教程:http://www.ibm.com/developerworks/cn/java/j-dyn0916/
API: http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/index.html
API文档:045Javassist入门手册
使用
与Agent结合的使用
1.创建项目,引入jar包
2.编写MANIFEST.MF文件
内容:
manifest-Version: 1.0
Premain-Class: com.agent.PerfMonAgent //启动agent模式的实现类
Can-Redefine-Classes: true
3.编写PerfMonAgent类,即jvm启动agent模式后,执行方法之前调用的类
4.编写PerfMonXformer类实现ClassFileTransformer接口的transform方法,即转化类格式的实现
具体的methods就是字节码的具体处理,需要用到javassist包中的提供的方法来修改。
5.将agent服务打包jar,使用自定义.MF文件
1) 项目右键->Export->java->JAR file
2) 选中项目
3) 选择jar的路径
4) Next,Next
5) 使用MF文件
6) Finish
6.项目配置,加入agent服务
1) 项目右键,或者java文件右键->Run Configurations
2) (x)=Arguments选项卡,填入启动VM参数
3) Run
7.启动项目或者运行某一个java类,都会启动agent并修改字节码
下载
源码:http://download.csdn.net/detail/supermarss/8716783
javassist学习手册:http://download.csdn.net/detail/supermarss/8716863
- 【实践】搭建agent服务+javassist字节码操作
- Javassist 字节码操作
- Javassist 字节码操作
- 字节码操作库Javassist
- 字节码操作(javassist)
- JAVA 字节码操作利器javassist
- java 字节码操作(javassist)
- Javassist字节码强化
- Javassist字节码增强
- 常见的字节码操作类库 Javassist
- Java学习之动态编译--字节码操作--javassist类库
- javassist学习:对已有类进行字节码操作
- Java字节码操作类库Javassist概述
- javassist 编译器字节码增强
- javassist 编译器字节码增强
- Java 字节码 工具 javassist
- Java字节码框架 -- Javassist
- [译]深入字节码操作:使用ASM和Javassist创建审核日志
- Android apk 监听
- 世界那么大,看TripAdvisor如何建立邮件营销王国吧!(上篇)
- Spark 伪分布式 & 全分布式 安装指南 - leejun_2005的个人页面 - 开源
- 工作流框架的重要名词!
- Map遍历的四种方法
- 【实践】搭建agent服务+javassist字节码操作
- 关于httpClient上传文件
- HTTPS站点搭建教程
- 学生信息的录入和打印,函数的封装
- cocos2dx lua ios glview 截图
- android的尺子滚动功能 RulerWheel
- 函数模板
- iconfont图标
- java的流程控制语句