2011年1月11日发布的Tomcat 7.0.6已经成为稳定版本,这是Tomcat 7分支的第一个稳定版本,用来取代2007年2月发布的Tomcat 6。
Apache决定不在Tomcat中添加对Java EE 6 Web Profile的完整支持,至少在眼下是这样的。因此Tomcat 7中只是简单地增加了Servlet 3.0(Java EE 6中引入的)的支持以及JavaServer Pages 2.2和EL 2.2的支持。新版本要求使用Java SE 6或更高版本。
Sevlet 3.0是一个重大更新,对规范做了很多细化,重点包括:
引入了对异步HTTP请求和响应的标准化支持。虽然异步支持在Tomcat 6里就有了,但那是通过一个非标准的API实现的,标准化意味着Servlet 3版本可移植到不同容器中。
动态配置:支持Web Fragment,库程序可以用它来提供配置,不再需要开发者在应用程序的web.xml文件中增加特定于库的配置。
配置过滤器、监听器和Servlet时使用注解,进一步减少了开发者所要编写的XML数量。
Servlet 3.0还大量使用了泛型,改善了会话追踪,引入了新的文件上传功能。
Tomcat 7中的改进也不是全都针对Servlet 3.0 API的,其中还有不少重要的安全性改进。现在针对基于脚本的访问、基于Web的访问、JMX代理访问和状态页访问有了独立的角色,允许做更具体的访问控制。为了避免跨站请求伪造(CSRF)攻击,所有的非幂等性请求(即多次执行不会产生相同结果的操作)都要求生成一个随机数。Tomcat 7还针对会话固定攻击(session fixation attack)采取了一些防御措施。会话固定攻击就是将客户端的会话ID强制设置为一个明确的已知值。
开发团队还将继续致力于解决一些容器内存泄露的常见问题,改善日志系统,改善容器启动时间。
最终Tomcat 7会提供一个轻量级API,允许开发者通过简单的几行代码嵌入容器。
想要使用完整Java EE 6 Web Profile的开发者可以在自己的项目里包含API。然而,Simple Web Profile Application Server(一个由社区主导的项目)正不断发展来弥补这一缺陷。此外 Apache Geronimo(Tomcat为其提供Servlet容器)将支持Web Profile和完整的Java EE 6 Profile。
原文链接:http://www.infoq.com/cn/news/2011/01/tomcat7_stable
【编辑推荐】