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:
|
Request for /FirstResource?param=One Erste Ressource: getParameter("param"); // returns "One" Anforderung an /SecondResource?param=Two weiterleiten Zweite Ressource: 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:
javax.servlet.annotation.WebServlet-Annotationen mit dem Attribut asyncSupported=trueweb.xml- und web-fragment.xml-Dateien mit dem Element <async-supported>true</async-supported> im Element <servlet>Weitere Informationen zu den Verhaltensänderungen in Servlet 3.1 finden Sie unter Servlet 3.1 behavior changes.