Sun 向 JCP 提交了 Servlet3.0 规范

  • Xandy Johnson
  • 宋玮

2007 年 6 月 23 日

话题:Java语言 & 开发

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 风格,可以要求响应保持打开,以允许当异步事件产生时发送额外的数据。
    • 阻塞 / 非阻塞通知——通知阻塞或非阻塞事件。
    • 频道概念——订阅一个频道,以及从该频道获取异步事件的能力。这意味着可以创建、订阅、退订,以及应用一些诸如谁能加入、谁不能加入的安全限制。
  • 安全
    • login/logout 能力。
    • 自注册。
  • 结合
    • 结合 / 需求,来自 REST JST JSR(JSR 311 )。
    • 结合 / 需求,来自 JSF 2.0 JSR(JSR 134 )。
  • 其它
    • 支持更好的欢迎文件(welcome file)。
    • ServletContextListener 排序。
    • 容器范围内定义 init 参数。
    • 文件上载——过程侦听——存储中间或最终文件。
    • 澄清线程安全问题。

Greg Wilkins,Jetty 的主要开发者和本 JSR 的支撑成员,反对“支持异步和 Comet”之下的一些目标。对于非阻塞输入和输出,他认为这一能力应该加入到容器中,而不是曝露给 servlet 开发者。对于延迟请求处理,他认为挂起 / 恢复语义会更好些,而且他们还将导致对延迟响应关闭的需求。

适当的时候现有项目将被用来作为指南。例如当前支持 Comet 的容器,如GrizzlyTomcat 和 Jetty,在为 Comet 定义 API 时,将被复查(review)。“Comet 是一种编程技术,允许 web 服务器无需任何客户端请求而发送数据到客户端。它允许创建托管在浏览器中的事件驱动 web 应用。”针对于可插拔 web 框架,现存的一些 web 框架如ShaleDWRSpring Web FlowWiched 也将被分析。

查看英文原文:Sun Submits Servlet 3.0 Specification to JCP

Java语言 & 开发