近日,Apache軟件基金會發(fā)布了Tomcat Web服務(wù)器7.0 Beta版,這也是3年多以來首次發(fā)布的新版本。新版本的開發(fā)時間持續(xù)了18個月,現(xiàn)在各位讀者可以從Apache軟件基金會的Tomcat項目站點上下載。
新版本的Tomcat實現(xiàn)了很多新規(guī)范,包括Servlet 3.0、JSP 2.2與EL 2.2。對Servlet 3.0的支持也宣告世界上使用最廣泛的Java Web容器已經(jīng)與最新的Servlet規(guī)范(Java EE 6規(guī)范的一部分)與時俱進了。Servlet 3.0進行了很多增強(比如說API已經(jīng)得到了增強)并引入了眾多新特性,旨在簡化開發(fā)者的工作量,可以更快速地構(gòu)建可伸縮的應(yīng)用。Servlet 3.0規(guī)范的一個關(guān)鍵特性就是對標準的(從技術(shù)角度來看,Tomcat、Jetty等容器已經(jīng)通過非標準的API實現(xiàn)了這些特性)異步HTTP請求與響應(yīng)的支持。規(guī)范描述了文件上傳的后端支持、這樣就無需使用像Apache Commons File Upload組件等第三方程序庫了。
規(guī)范還支持動態(tài)配置Web應(yīng)用,這將產(chǎn)生深遠的影響??梢酝ㄟ^注解來構(gòu)造Web層(如Servlet),這樣就無需再使用WEB-INF/web.xml部署描述符文件了。此外,新的規(guī)范還定義了一個API,通過這個API能夠在運行期以編程的方式將Servlet、Filter注冊到容器中。Web Fragments的出現(xiàn)允許第三方程序庫擁有自己的web.xml描述符文件,配置會加到Web應(yīng)用的主web.xml文件中。比如說,可以將某個Web框架的jar文件直接放到應(yīng)用的WEB-INF/lib目錄下,容器會自動完成配置。
Tomcat 7增加了對Session定位(fixation)攻擊的防護措施。所謂Session定位攻擊,就是強制將客戶端的Session ID修改為明確的已知值。此外,Tomcat 7還支持SSL Session跟蹤,對各種訪問機制(比如JMX、Web、腳本訪問等)提供更加細粒度的訪問許可。
對于那些想要嵌入式容器的開發(fā)者來說,新版本的Tomcat 7提供了更大的靈活性;它公開了一個輕量級的API用于將容器嵌入到客戶端代碼中。除此之外,Tomcat 7所需的jar文件更少,這樣就可以根據(jù)需要構(gòu)建Tomcat了。
此次發(fā)布還簡化了服務(wù)器的管理工作,支持異步的日志線程,可以獨立于請求/響應(yīng)管道將其寫到日志中。Tomcat 7對內(nèi)存泄漏的預(yù)防、識別與查找提供了極佳的支持,這種支持關(guān)鍵在于Tomcat 7改進的類裝載器和JreLeakPreventionListener類。Tomcat 7首度支持“aliases”,這非常類似于Apache服務(wù)器的同名特性。憑借這個特性,Tomcat中的應(yīng)用可以看到外部資源的內(nèi)容,就像文件系統(tǒng)一樣。
最后要說的是,Tomcat 7并不支持Java EE 6 web-profile。Java EE 6 web profile定義了整個Java EE規(guī)范的一個子集,主要面向Web應(yīng)用。若想了解關(guān)于Java EE 6規(guī)范、尤其是web profile規(guī)范的更多信息,請查看Java EE 6 Platform草案中的Web Profile章節(jié)。從概念上來說,這么做可以減少應(yīng)用服務(wù)器廠商維護完整的向后兼容性的負擔(dān)。Java EE 6 web profile對于那些想要獲得認證的Servlet容器來說是很理想的選擇。Simple Web Profile Application Server項目就旨在通過Apache軟件基金會自己的組件構(gòu)建一個兼容于Java EE 6 web-profile的服務(wù)器,其基礎(chǔ)則是Apache Tomcat 7。