@Kontext HttpServletRequest Umfang in Jersey ContainerResponseFilter
Schreibe ich eine Jersey-Response-filter. Ich bin mit Jersey 1.17. Ich möchte den Zugriff auf einige Attribute des httpServletRequest in der filter-API. Die Art und Weise, was ich jetzt tun ist als unten. Ist es sicher zu injizieren, die servletRequest wie in dem snippet unten oder wird dies dazu führen, dass einige Art von Parallelität Probleme? Wenn es mehrere Anfragen conncurrently, wird das servletRequest in verschiedenen Anforderungen gegenseitig überschreiben? Vielen Dank für Ihre hlep.
public class LoggingFilter implements ContainerResponseFilter {
@Context private HttpServletRequest servletRequest;
@Override
public ContainerResponse filter(final ContainerRequest req, final ContainerResponse resp) {
String s = this.servletRequest.getAttribute("xxx");
....
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abschnitt 9.1 (neueste, 5.1 zuvor) Parallelität der JAX-RS-Spezifikation Staaten:
So, wie pro die Spezifikation JAX-RS-Implementierungen (z.B. Jersey) sind erforderlich, um sicherzustellen, dass der Kontext ist sicher. Halten Sie tun, was Sie tun.
Siehe auch: Auszug-Anfrage-Attribute von container-Anfrage von Jersey
Du sicher bist. Wenn Sie die Injektion
HttpServletRequest
/HttpServletResponse
Sie nicht den Umgang mit einer bestimmten Instanz, sondern eher mit einem proxy über die Sie sich aufrufen fordert eine echte Instanz gespeichert ThreadLocal Objekt. Jede Anfrage wird verarbeitet durch einen separaten thread hat Zugriff auf seine eigeneHttpServletRequest
/HttpServletResponse
. Neben InjektionHttpServletRequest
/HttpServletResponse
Sie können auch SpritzenThreadLocal<HttpServletRequest>
/ThreadLocal<HttpServletResponse>
und durch '#get () " - Methode können Sie um den tatsächlichen request /response-Instanzen intead von proxies.