Sun向JCP提交Servlet3.0規範—JSR 315

yangtao309發表於2007-06-26
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日就會出評論。

以下是這些目標的詳細版本:

可插拔的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風格,可以要求響應保持開啟,以允許當非同步事件產生時傳送額外的資料。
阻塞/非阻塞通知——通知阻塞或非阻塞事件。
頻道概念——訂閱一個頻道,以及從該頻道獲取非同步事件的能力。這意味著可以建立、訂閱、退訂,以及應用一些諸如誰能加入、誰不能加入的安全限制。
安全
login/logout能力。
自注冊。
結合
結合/需求,來自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 也將被分析。

來源:
http://www.infoq.com/news/2007/06/servlet3

相關文章