问题描述
1、我们意图在实际操作之前加入一些字节码进行监控,例如对 慢sql, dubbo 并发 ,开发发布对时候对mybatis/ibatis对配置文件做检查
问题出现的环境背景及自己尝试过哪些方法
2、我们使用 Instrumentation 在启动的时候,将我们监控开发的 Agent jar 包导入即可,但是发现使用 javassist 的如下代码不起作用
ClassPool pool = new ClassPool();//这一行之后就没有运行了,
byte[] transformed = new byte[0];
CtClass cl = null;
try {
cl = pool.get(className.replaceAll("/", "."));
System.out.println("four");
CtBehavior[] methods = cl.getDeclaredBehaviors();
for (CtBehavior method : methods) {
if (!method.isEmpty()) {
doMethod(method);
}
}
transformed = cl.toBytecode();
} catch (CannotCompileException | NotFoundException | IOException io) {
io.printStackTrace();
} finally {
if (cl != null) {
cl.detach();
}
}
return transformed;
pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
top.huzhurong.agent
test
1.0-SNAPSHOT
org.javassist
javassist
3.23.1-GA
org.apache.maven.plugins
maven-compiler-plugin
3.6.1
1.8
1.8
utf-8
org.apache.maven.plugins
maven-jar-plugin
2.3.1
true
test.Agent
javassist-3.23.1-GA.jar
true
true
google,百度也没有找到什么,本身也不太好调试,以前使用 ASM 是可以的。提前感谢