En la especificación de Servlet 3.0, si se incluye una serie de consulta con una solicitud, esta serie pasa a estar disponible al recurso asignado. En la especificación de Servlet 3.1, si una serie de consulta se proporciona al recurso asignado, esta serie de consulta pasa a estar disponible al recurso asignado en lugar de la serie de consulta de la solicitud original.
El ejemplo siguiente muestra esta diferencia de comportamiento:
|
Request for /FirstResource?param=One First Resource: getParameter("param"); // returns "One" Forward request to /SecondResource?param=Two SecondResource: getParameter("param"); // returns "Two" AsyncContext ac = getAsyncContext(); ac.start(); ac.dispatch(); // dispatches to /FirstResource First Resource: Servlet-3.0 feature : getParameter("param") returns "One" Servlet-3.1 feature : getParameter("param") returns "Two" |
No se permite obtener el objeto de solicitud o respuesta después de llamar a los métodos
AsyncContext.dispatch() o AsyncContext.complete() y se genera la siguiente excepción:
java.lang.IllegalStateException: SRVE9015E:
No se puede obtener el objeto de solicitud o respuesta después de un AsyncContext.dispatch() o AsyncContext.complete().
Esta regla señala los elementos siguientes:
javax.servlet.annotation.WebServlet con un atributo asyncSupported=trueweb.xml y web-fragment.xmlcon un elemento <async-supported>true</async-supported> en el elemento <servlet>Para obtener más información sobre los cambios de comportamiento de Servlet 3.1, consulte el recurso siguiente: Cambios de comportamiento de Servlet 3.1.