3
일부 내용을 확인하는 ContainerRequestFilter
을 구현하려고합니다. 궁극적으로는 SSL 클라이언트 인증서에서 공통 이름을 추출하지만, 아직 거기에 없습니다. 이 필터는 Grizzly HTTP Server (Grizzly 2.3.8, 서블릿 컨테이너 없음)에서 실행되며 JAX-RS 리소스 (Jersey 2.6) 앞에 위치합니다.Grizzly/Jersey : ContainerRequestFilter에 삽입 된 요청이 null입니다.
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 리소스에 주입하면 주입이 성공적으로 끝난다.
내가 뭘 잘못하고 있니?
감사합니다. 티켓에서 관련된 (그러나 고정 된) 문제 인 https://java.net/jira/browse/JERSEY-1960을 참조하고 있습니다. 내 코드를 서블릿 컨테이너로 전환하면 작동하는지 확인할 수 있습니다. 나는 그 수정을 기다렸다가 그때 다시 바꿀 것이다. – Hank