Sun向JCP提交Servlet3.0规范—JSR 315

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

>支持异步和Comet
异步非常重要的特性,以及保持常连接,这些原来不是Http协议的本身特征,所以,实现异步和comet要难一些,这些都需要新的servlet容器在Http和socket底层基础上进行更复杂的模拟封装。

comet等功能应用其实很广泛,不只是AJAX,原来就存在这个问题,也就是拉和推的机制:PULL和PUSH,比如服务器要不断将数据不定时发送到浏览器,现在只能采取从浏览器一端不断从服务器PULL拉数据,这肯定不适应大并发访问,浪费带宽,如果能够自然实现服务器将数据推给所有客户端,很显然更合理。

只要到Servlet3.0才能将B/S结构向更广泛范围推广。

期待nio的推
到时候ajax就牛比了