搭建agent服务+javassist字节码操作

简介

转载请注明出处: 对于agent,是在vm启动,执行方法前,将字节码修改的服务代理。 对于javassist,是修改字节码具体实现。 这两个结合有什么用啊?写测试框架,,不仅局限于此。 对于字节码: 字节码处理工具,bcel,asm与虚拟机指令打交道。Javassist采用java编码的方法处理字节码,性能相对较低,但方便。 官方:~chiba/javassist/ 例子: 创建class 拦截方法AOP 教程: API: ~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并修改字节码

下载

源码: javassist学习手册:

每一发奋努力的背后,必有加倍的赏赐。

搭建agent服务+javassist字节码操作

相关文章:

你感兴趣的文章:

标签云: