3
我試圖執行ContainerRequestFilter
來檢查一些內容。最終,它將從SSL客戶端證書中提取通用名稱,但我還沒有。過濾器運行在Grizzly HTTP Server(Grizzly 2.3.8,沒有servlet容器)上,並位於JAX-RS資源(Jersey 2.6)的前面。Grizzly/Jersey:向ContainerRequestFilter注入的請求爲空
當我試圖將org.glassfish.grizzly.http.server.Request
注入過濾器時,它爲空。
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。我可以確認將我的代碼切換到一個servlet容器的工作。我會等待修復,然後切換回來。 – Hank