Ellenőrizze az aszinkron szervletek viselkedésváltozását

A Servlet 3.0 előírásban, ha egy kérés tartalmaz egy lekérdezési karaktersorozatot, akkor ez a karaktersorozat elérhetővé van téve az elindított erőforrás számára. A Servlet 3.1 előírásban, ha az elindító erőforrásnak adva van egy lekérdezési karaktersorozat, akkor ez a lekérdezési karaktersorozat van elérhetővé téve az elindított erőforrás számára, az eredeti kérésből származó lekérdezési karaktersorozat helyett.

A következő példa bemutatja ezt a viselkedésbeli különbséget:


A /FirstResource?param=One kérése

Első erőforrás:

getParameter("param"); // a "One" értéket adja vissza

Kérés továbbítása a következőnek: /SecondResource?param=Two

SecondResource:

getParameter("param"); // a "Two" értéket adja vissza
AsyncContext ac = getAsyncContext();
ac.start();
ac.dispatch(); // dispatches to /FirstResource

Első erőforrás:

Servlet-3.0 szolgáltatás : getParameter("param") a "One" értéket adja vissza
Servlet-3.1 szolgáltatás : getParameter("param") a "Two" értéket adja vissza

A kérés vagy válasz objektum beszerzése az AsyncContext.dispatch() vagy AsyncContext.complete() metódus meghívása után nem engedélyezett, és a következő kivételt eredményezi:

java.lang.IllegalStateException: SRVE9015E: A kérés vagy válasz objektum nem szerezhető be egy AsyncContext.dispatch() vagy AsyncContext.complete() után.

Ez a szabály a következő elemeket jelöli meg:

A Servlet 3.1 viselkedésváltozásaival kapcsolatos további információkért tekintse meg a következőt: Servlet 3.1 viselkedésváltozások.