java - 如何使用 Bytebuddy 检测 HttpURLConnection?

标签 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 是在 Bootstrap 上加载的。我怎样才能继续检测它?

最佳答案

默认情况下,Byte Buddy 会忽略引导类加载器。定义一个不包含 HttpUrlConnection 的不同忽略匹配器以避免这种排除。请注意,JVM 本身定义了数千个类,这些类全部加载在引导加载程序上,如果您不有效地排除大多数引导类,那么 JVM stsrtup 会变得非常慢。

关于java - 如何使用 Bytebuddy 检测 HttpURLConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56898442/

相关文章:

java - ByteBuddy静态方法拦截@Origin方法

java - JScrollPane 中的 GridBagLayout 无法正确调整大小

java - 如何在java中从Mongo子文档中获取特定数据?

java - Bytebuddy - 拦截 java.lang.RuntimeException 构造函数

java - 如何使用AgentBuilder替换类的方法

java - Byte Buddy - 方法 Implementation.Context.Default 不是 bean 属性 - 创建一个 setter

java - 编写一个在字符流输入供应商和输出供应商之间进行过滤的过滤器

java - 关闭和访客模式之间有显着差异吗?

java - 如何在 Java Button (GUI) 中调用外部方法

java - 如何使用 ByteBuddy 对接口(interface)默认方法进行 rebase ?