Buscar un cambio de comportamiento en servlets asíncronos

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:

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.