Tomcat源码分析(一):版本选择

时间:2024-03-16 15:14:21

目前tomcat已经升级到9.0.0.M26 (alpha)版本,如何选择安装合适版本的Tomcat?

一般从以下两个因素来分析:

  1. JDK版本
  2. 所需要支持的Servlet和JSP规范

比如如果想要安装最新版本的tomcat9.x,那么至少需要jdk1.8。

而对于Servlet规范可能有人会有点陌生,比如servlet3.0新增了@WebServlet、@WebFilter注解来替代web.xml的配置,新增了Servlet异步化方便将请求解析和业务处理线程分离等。具体在此处不展开描述。

tomcat9.0实现的servlet4.0版本目前还处于草案阶段,不推荐使用。

tomcat8.5取代了废弃的8.0版本,按照官方描述,tomcat8.5不仅仅实现了相同的Servlet规范,还额外实现了JASPIC 1.1规范,并且显著提升了性能、稳定性以及使用成本,具体可以参考Changelog。

tomcat6.0目前已经不再更新,以后下载和查看文档将会有点困难。具体的版本选择可以参照以下表格。

Tomcat源码分析(一):版本选择

对于源码阅读来说,一般是从早一点的版本开始。《How tomcat works》中已经对tomcat4和5做了详细分析,是不错的入门方式。

我对http协议的解析部分比较感兴趣,参考了更新日志后,在tomcat6.0中看到这样一条:高级IO(Advanced IO capabilities)。这个高级IO对应的配置在server.xml中:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

这个protocol有三个可选项:

  • org.apache.coyote.http11.Http11Protocol - same as HTTP/1.1
  • org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector
  • org.apache.coyote.http11.Http11AprProtocol - the APR connector.

tomcat从6.x版本开始提供了bio、nio、以及apr三种连接器的实现,之后我们将会选择该版本并对这三种连接器进行源码分析。

参考文献:

http://tomcat.apache.org/whichversion.html
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/

相关文章