我试图实现一个检查某些东西的ContainerRequestFilter。最终,它会识别一个令牌,但我还没有。该过滤器在Grizzly HTTP Server(Grizzly 2.3.4)上运行,位于JAX-RS资源(Jersey 2.0)之前。我也在使用Guice 3.0。
当我试图将javax.ws.rs.container.ResourceInfo注入过滤器时,它为空。
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import java.io.IOException;
public class MyRequestFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
String method = containerRequestContext.getMethod();
System.out.println("method = " + method);
if("OPTIONS".equals(method)) return;
System.out.println("DO SECURITY");
}
}
将请求注入JAX-RS资源,注入成功,我可以使用它。
我做错了什么?
答案 0 :(得分:2)
要在ContainerRequestFilter
中启用注入,您必须将其注释为@Provider
,然后才能正常工作
@Provider
public class MyRequestFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
...
}