Ricerca di una modifica al comportamento nei servlet asincroni

Nella specifica Servlet 3.0, se una si include una stringa di query ad una richiesta, la stringa viene resa disponibile tra le risorse distribuite. Nella specifica Servlet 3.1, se si fornisce una stringa di query alla risorsa di distribuzione, questa stringa di query viene resa disponibile alla risorsa distribuita invece che alla stringa di query della richiesta originale.

Il seguente esempio illustra questa differenza di comportamento:


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"

Non è consentito ottenere l'oggetto della richiesta o della risposta dopo la chiamata dei metodi AsyncContext.dispatch() o AsyncContext.complete(), ciò darà luogo alla generazione della seguente eccezione:

java.lang.IllegalStateException: SRVE9015E: Cannot obtain the request or response object after an AsyncContext.dispatch() or AsyncContext.complete().

Questa regola contrassegna i seguenti elementi:

Per ulteriori informazioni sulle modifiche al comportamento di Servlet 3.1, consultare la seguente risorsa: Servlet 3.1 behavior changes.