无法将ResourceInfo注入ContainerRequestFilter

时间:2016-03-09 10:59:40

标签: jersey guice grizzly

我试图实现一个检查某些东西的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资源,注入成功,我可以使用它。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

要在ContainerRequestFilter中启用注入,您必须将其注释为@Provider,然后才能正常工作

@Provider
public class MyRequestFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;

    ...
}