Prüfen, ob sich das Verhalten von asynchronen Servlets geändert hat

Wenn in der Servlet 3.0-Spezifikation eine Abfragezeichenfolge in einer Anforderung enthalten ist, wird diese Zeichenfolge für die zugeteilte Ressource verfügbar gemacht. Wenn in der Servlet 3.1-Spezifikation eine Abfragezeichenfolge für die zugeteilte Ressource bereitgestellt wird, wird diese Abfragezeichenfolge anstelle der Abfragezeichenfolge der ursprünglichen Anforderung für die zugeteilte Ressource verfügbar gemacht.

Das folgende Beispiel veranschaulicht diesen Verhaltensunterschied:


Anforderung von /FirstResource?param=One

Erste Ressource:

getParameter("param"); // returns "One"

Anforderung an /SecondResource?param=Two weiterleiten

SecondResource:

getParameter("param"); // returns "Two"
AsyncContext ac = getAsyncContext();
ac.start();
ac.dispatch(); // dispatches to /FirstResource

Erste Ressource:

Servlet-3.0 feature : getParameter("param") returns "One"
Servlet-3.1 feature : getParameter("param") returns "Two"

Das Abrufen des Anforderungs- oder Antwortobjekts nach dem Aufruf der Methode AsyncContext.dispatch() oder AsyncContext.complete() ist nicht zulässig und resultiert in der folgenden Ausnahme:

java.lang.IllegalStateException: SRVE9015E: Das Anforderungs- oder Antwortobjekt kann nach der Ausführung einer Methode AsyncContext.dispatch() oder AsyncContext.complete() nicht abgerufen werden.

Diese Regel markiert die folgenden Elemente:

Weitere Informationen zu den Verhaltensänderungen in Servlet 3.1 finden Sie unter Servlet 3.1 behavior changes.