InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Sun向JCP提交了Servlet3.0规范

作者 Xandy Johnson 译者 宋玮 发布于 2007年6月23日

领域
语言 & 开发
主题
Java ,
JCP标准

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

译者 宋玮 有多年软件开发经验,长期担任技术管理和项目管理工作,一直关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。

Comet 技术也被标准化了,赞! 发表人 Lai Jason 发表于
Re: Comet 技术也被标准化了,赞! 发表人 谢 彪 发表于
纠错 发表人 刘江 图灵 发表于
  1. 返回顶部

    Comet 技术也被标准化了,赞!

    发表人 Lai Jason

    看来 Ajax 应用确实带来了对 Comet 技术越来越多的需求,而现在在 Servlet 3.0 将其标准化,正是体现了这一趋势。

    加强关注。同意将 Comet 能力加入到容器中的说法,这样也无须开发人员更多地干预其具体实现细节。

    不过 Comet 技术具体如何实现呢?长期占用一个 TCP 连接或者使用 poll 的方式?前者很容易导致服务器的并发性能急剧下降,而后者则无法保证需要同步传送的数据按照需求传输。或者说,是两种方式的透明混合?

  2. 返回顶部

    纠错

    发表人 刘江 图灵

    1.第一段中的“预计不出2007年7月2日就会出评论”应该不符合原意,此句是指对JSR 315发表意见的截止时间。
    2.EoD大小写不一致。
    3.generic应该译为泛型为宜。这个术语是侯捷先生的贡献。
    4.deployment descriptors应该译为部署描述文件。管文件叫字符,怎么也说不过去。
    5.Use of other language enhancements where possible to improve the usability of the API.应该译为“尽可能使用其他语言特性增强改进API的可用性。”
    6.“结合”(alignment)怀疑应该译为一致。
    7.最后一行的Wiched应该是Wicket。另外这一段整段翻译得有些磕磕绊绊的感觉。

  3. 返回顶部

    Re: Comet 技术也被标准化了,赞!

    发表人 谢 彪

    这是个问题,以前自己也想过,特别是ajax大量被应用的时候,怎样去利用一个有效的方式获取一个持续性连接?
    个人认为这还得有浏览器配合才行!

深度内容

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。