Zkontrolovat změnu chování u asynchronních servletů

Ve specifikaci Servlet 3.0, pokud je řetězec dotazu zahrnut s odezvou, je tento řetězec zpřístupněn k odbavenému prostředku. Je-li ve specifikaci Servlet 3.1 zadán řetězec dotazu na odbavení prostředku, bude tento řetězec zpřístupněn k odbavenému prostředku namísto řetězce dotazu z původního požadavku.

Následující příklad demonstruje tento rozdíl v chování:


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"

Získání objektu požadavku nebo odezvy po volání metod AsyncContext.dispatch() nebo AsyncContext.complete() není povoleno a vede k následující výjimce:

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

Toto pravidlo označí následující položky:

Další informace o změnách chování Servlet 3.1 viz následující prostředek: Změny chování Servlet 3.1.