【51CTO精選譯文】在之前51CTO翻譯的的Java EE 6系列中,我們介紹了Servlet 3.0:JSR 315規范是Servlet技術的最新版本,這個規范的草案於2009年6月發布,並加入到Java EE 6當中來。Servlet 3.0中加入了對異步處理的支持,Servlet線程不用再等待資源如數據庫的響應,在收到響應前可以繼續處理其它事情,這個支持使持續客戶端連接成為可能,如聊天室應用程序,有了異步處理的支持,Servlet和AJax的搭配使用效率會更好。
為了確保為同步處理編寫的代碼不被用於異步上下文中,Servlet 3.0要求你在@WebServlet注解中將asyncSupported屬性設為true,你也可以在@WebFilter注解中將asynchSupported屬性設為true使Servlet過濾器也支持異步。
異步處理也包括ServletRequest方法,如startAsync(),它產生一個異步請求和新的類,如AsyncContext,這個類為異步操作提供執行上下文。
下面是一個處理異步請求的Servlet示例:
- @WebServlet(name="CalculatorServlet", asyncSupported=true, urlPatterns={"/calc", "/getVal"})
- public class CalculatorServlet extends HttpServlet{
- public void doGet(HttpServletRequest req, HttpServletResponse res) {
- ...
- AsyncContext aCtx = req.startAsync(req, res);
- }
- ...
- }
Servlet 3.0也包括一個新的監聽器類AsyncListener,當一個異步操作完成或超時時它會通知你,AsyncContext類包括一個complete()方法,當異步操作完成時你可以用它提交響應,AsyncListener類有一個dispatch()方法,它可以將異步請求轉發給容器,以便其它框架,如JSP可以產生響應。
【51CTO.com譯稿,非經授權請勿轉載。合作站點轉載請注明原文譯者和出處為51CTO.com,且不得修改原文內容。】