将 javax.ws.rs.core.Context 与 fabric3 一起使用

Using javax.ws.rs.core.Context with fabric3

我正在尝试使用 fabric3v2.5.3 为 RESTful Web 服务实施 ContainerRequestFilter。我有过滤器工作,但我需要在请求中获取 ip 地址。我试过使用

   @Context
   HttpServletRequest servletRequest;

但是在尝试访问HttpServletRequest 时抛出空指针异常。我们正在使用 JAX-RS fabric3 扩展附带的内置球衣 2.13。有没有办法让@Context 在 fabric3 中工作?

@Context注入支持将在Fabric 3.0中加入,之前的版本没有。

对于 Fabric3 3.0 之前的版本,您可以通过注入的方式检索 HTTP servlet 请求和响应对象 Fabric3RequestContext:

 public class SomeFilter implements .... {

   @Context
   protected F3RequestContext context;

   public void filter(ContainerRequestContext requestContext) {
       HttpServletRequest req =  
            context.getHeader(HttpServletRequest.class, "fabric3.httpRequest");
   }
}