Verificaţi modificarea de comportament pe servleturile asincrone

În specificaţia Servlet 3.0, dacă un şir interogare este inclus cu o cerere, acest şir este făcut disponibil la resursa dispecerizată. În specificaţia Servlet 3.1, dacă un şir de interogare este furnizat la resursa dispecerizată, acest şir de interogare este făcut disponibilă pentru resursa dispecerizată în loc şirul de interogare din cererea originală.

Următorul exemplu demonstrează această diferenţă de comportament:


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"

Obţinerea cererii sau răspunsului după apelarea metodelor AsyncContext.dispatch() or AsyncContext.complete() nu este permisă şi rezultatelor din excepţia următoare:

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

Această regulă semnalează următoarele articole:

Pentru informaţii suplimentare despre modificările comportamentului Servlet 3.1, vedeţi următoarea resursă: Servlet 3.1 behavior changes.