Sun 已經向JCP(Java Community Process)提交了Servlet3.0規范——JSR 315(Java Specification Request)。其高級目標包括可插拔web框架、EoD(ease of development——易於開發)特征、支持異步和Comet、安全、與其他規范結合、以及其它各項改進。它預備包含在Java EE 6中,Java EE 6的最終版大約於2008第4季度發布。預計不出2007年7月2日就會出評論。
以下是這些目標的具體版本,來自JSR 315提案 :
以下是引用片段:
- 可插拔的Web框架
- 幾乎所有基於Java的web框架都建立在servlet之上。現今大多數web框架要麼通過servlet、要麼通過Web.XML插入。利用標注(Annotation)來定義servlet、listener、filter將使之(可插拔)成為可能。程序訪問web.xml和動態改變web應用配置是所期望的特性。該JSR將致力於提供把不同web框架無縫地插入到web應用的能力。
- EOD
- 標注——利用標注來作為編程的聲明風格。
- web應用零配置是EoD努力方向之一。部署描述符將被用來覆蓋配置。
- 范型(generic)——在API中盡可能利用范型。
- 使用其它語言增強可能需要改善API可用性的地方。
- 支持異步和Comet
- 非阻塞輸入——從客戶端接收數據,即使數據到達緩慢也不會發生阻塞。
- 非阻塞輸出——發送數據到客戶端,即使客戶端或網絡很慢也不會發生阻塞。
- 延遲請求處理——Ajax web應用的Comet風格,可以要求一個請求處理被延遲,直到超時或一個事件發生。延遲請求處理對以下情況也很有用:假如遠程的/遲緩的資源必須在為該請求服務之前被獲得;或者假如訪問一個非凡資源,其需要扼殺一些請求以防止太多的並發訪問。
- 延遲響應關閉——Ajax web應用的Comet風格,可以要求響應保持打開,以答應當異步事件產生時發送額外的數據。
- 阻塞/非阻塞通知——通知阻塞或非阻塞事件。
- 頻道概念——訂閱一個頻道,以及從該頻道獲取異步事件的能力。這意味著可以創建、訂閱、退訂,以及應用一些諸如誰能加入、誰不能加入的安全限制。
- 安全
- 結合
- 結合/需求,來自REST JST JSR(JSR 311 )。
- 結合/需求,來自JSF 2.0 JSR(JSR 134 )。
- 其它
- 支持更好的歡迎文件(welcome file)。
- ServletContextListener排序。
- 容器范圍內定義init參數。
- 文件上載——過程偵聽——存儲中間或最終文件。
- 澄清線程安全問題。
Greg Wilkins,Jetty 的主要開發者和本JSR的支撐成員,反對“支持異步和Comet”之下的一些目標。對於非阻塞輸入和輸出,他認為這一能力應該加入到容器中,而不是曝露給servlet開發者。對於延遲請求處理,他認為掛起/恢復語義會更好些,而且他們還將導致對延遲響應關閉的需求。
適當的時候現有項目將被用來作為指南。例如當前支持Comet的容器,如Grizzly 、Tomcat 和Jetty,在為Comet定義API時,將被復查(review)。“Comet 是一種編程技術,答應web服務器無需任何客戶端請求而發送數據到客戶端。它答應創建托管在浏覽器中的事件驅動web應用。”針對於可插拔web框架,現存的一些web框架如Shale 、DWR 、Spring Web Flow 和Wiched 也將被分析。