当前位置: 首页 > 知识库问答 >
问题:

Grizzly/Jersey:注入ContainerRequestFilter的请求为空

段溪叠
2023-03-14

我试图实现一个< code > ContainerRequestFilter 来检查一些东西。最终,它将从SSL客户机证书中提取通用名称,但我还没有做到这一点。过滤器运行在Grizzly HTTP服务器上(Grizzly 2.3.8,没有servlet容器),位于JAX-RS资源(Jersey 2.6)的前面。

当我尝试将org.glassfish.grizzly.http.server.Request注入过滤器时,它为null。

import org.glassfish.grizzly.http.server.Request;

@Provider
@Priority(Priorities.AUTHENTICATION)    // somewhat early
@SkpSecureClient    // name the filter with my own annotation
public class SecureClientFilter implements ContainerRequestFilter {

  private final Logger log = LoggerFactory.getLogger(this.getClass());

  @Context
  Request request;

  @Override
  public void filter(ContainerRequestContext requestContext) throws IOException {

    if (request == null) {
      log.debug("Unable to inject 'request'");
      // I always end up here
    } else if (request.isSecure()) {
      log.warn("Request is not secure!");
      // do something, e.g. abort request
    } else  {
      log.debug("Request is secure!");
    }
  }
}

将请求注入到 JAX-RS 资源中,注入是成功的,我可以使用它。

我做错了什么?

共有1个答案

范麒
2023-03-14

我认为这是泽西岛的一个错误。刚刚提交了一个问题 https://java.net/jira/browse/JERSEY-2462

 类似资料: