程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> Java EE 6新特性之Servlet 3.0的異步處理

Java EE 6新特性之Servlet 3.0的異步處理

編輯:J2EE

【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示例:

  1. @WebServlet(name="CalculatorServlet", asyncSupported=true, urlPatterns={"/calc", "/getVal"})
  2. public class CalculatorServlet extends HttpServlet{
  3. public void doGet(HttpServletRequest req, HttpServletResponse res) {
  4. ...
  5. AsyncContext aCtx = req.startAsync(req, res);
  6. }
  7. ...
  8. }

  • Java Servlet和Servlet 3.0的新特性
  • 淺析Servlet 3.0 API的概念
  • Java EE 6引入的三大新技術之JAX-RS
  • Java EE 6數據驗證新框架:Bean驗證
  • Java EE 6增強的可擴展性:Web分片和可插
注意startAsync()方法返回AsyncContext對象。

Servlet 3.0也包括一個新的監聽器類AsyncListener,當一個異步操作完成或超時時它會通知你,AsyncContext類包括一個complete()方法,當異步操作完成時你可以用它提交響應,AsyncListener類有一個dispatch()方法,它可以將異步請求轉發給容器,以便其它框架,如JSP可以產生響應。

【51CTO.com譯稿,非經授權請勿轉載。合作站點轉載請注明原文譯者和出處為51CTO.com,且不得修改原文內容。】

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved