我的LnP测试表明我的球衣过滤器在以下位置阻塞:
org.jvnet.hk2.internal.ServiceHandleImpl.pushInjectee(ServiceHandleImpl.java:222)
org.jvnet.hk2.internal.MethodInterceptorImpl.invoke(MethodInterceptorImpl.java:119)
org.jvnet.hk2.internal.MethodInterceptorInvocationHandler.invoke(MethodInterceptorInvocationHandler.java:62)
com.sun.proxy.$Proxy258.getResourceMethod(Unknown Source)
这是因为我在过滤器中注入了一些东西并使用了它:
public class MyFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo
}
其他@Context注入(例如HttpServletRequest)也有类似的问题,只要它是代理即可。
似乎只有1个ServiceHandleImpl并在线程之间共享。
这是一个已知问题吗?我有什么机会可以绕开这一争论?
例如,我可以重写代理生成器以为基于线程本地的代理提供“每线程ServiceHandleImpl”而不是单例代理吗?