asynchronous サーブレットでの振る舞いの変更を確認する

Servlet 3.0 仕様では、要求に照会ストリングが含まれている場合、このストリングが、ディスパッチされるリソースに対して使用可能にされます。Servlet 3.1 仕様では、ディスパッチするリソースに対して照会ストリングが提供されている場合、この照会ストリングが、元の要求からの照会ストリングの代わりに、ディスパッチされるリソースに対して使用可能にされます。

以下の例は、この動作の違いを示します。


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"

AsyncContext.dispatch() メソッドまたは AsyncContext.complete() メソッドの呼び出し後に要求オブジェクトまたは応答オブジェクトを取得することは許可されておらず、これを行うと以下の例外が発生します。

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

この規則により、以下の項目にフラグを立てます。

Servlet 3.1 での振る舞いの変更について詳しくは、 Servlet 3.1 での振る舞いの変更のリソースを参照してください。