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。
评论