私はアドバイスで同様のメソッドを呼び出すアドバイスを持っています。アドバイスが一度だけ呼び出されるようにするにはどうすればよいでしょうか。私がアドバイスの中で呼び出すメソッドはインストゥルメントされているメソッドと同じですが、これは再帰呼び出しとjava.lang.StackOverflowErrorの結果になります。バイトバディで再帰呼び出しを避ける方法 - java.lang.StackOverflowError
transform(
new AgentBuilder.Transformer.ForAdvice()
.include(JettyHandlerAdvice.class.getClassLoader())
.advice(named("addFilterWithMapping").and(ElementMatchers.takesArgument(0,named("org.eclipse.jetty.servlet.FilterHolder"))),JettyHandlerAdvice.class.getName())
)
情報
@Advice.OnMethodEnter
private static void before(@Advice.AllArguments Object[] args, @Advice.Origin("#m") String methodName, @Advice.This Object thiz) {
FilterHolder filterHolder = ((org.eclipse.jetty.servlet.ServletHandler)thiz).addFilterWithMapping(XYZFilter.class, "/*", EnumSet.of(javax.servlet.DispatcherType.REQUEST));
}