如何使用Bytebuddy检测HttpURLConnection?

时间:2019-07-05 07:28:11

标签: java byte-buddy

我正在使用Bytebuddy拦截HttpURLConnection的某些方法并添加跟踪。我编写了以下代码:

File temp = Files.createTempDirectory("tmp").toFile();
            new AgentBuilder.Default().ignore(none())
                    .enableBootstrapInjection(inst, temp)
                    .type(hasSuperType(is(HttpURLConnection.class)))
                    .transform(new AgentBuilder.Transformer.ForAdvice()
                            .include(HttpURLConnection.class.getClassLoader())
                            .advice(named("setRequestMethod"), HttpURLIntercept.class.getName()))
                    .installOn(inst);

但是该方法从未使用过。

我知道HttpURLConnection已加载到引导程序中。我怎么仍可以检测呢?

1 个答案:

答案 0 :(得分:0)

默认情况下,字节好友忽略引导类加载器。定义一个不包含HttpUrlConnection的其他忽略匹配器,以避免此排斥。请注意,JVM本身定义了成千上万个类,这些类全部加载到引导加载程序中,如果您没有有效地排除大多数引导类,则JVM stsrtup会变得非常慢。