本系列文章,都是自己对《How Tomcat Works》这本书的中文版的一个学习心得。
很多文字出自此书。
正文
现在的tomcat版本已经迭代到了tomcat 9.x。在作者写那本书时,主要是剖析的是4.1.12和5.0.18版本,现在看来算是比较旧的版本了,但是这并不影响我们洞悉tomcat的内在逻辑。
tomcat可以简单的看做是一个Servlet容器,免费、开源。代号是Catalina。
它由很多组件构成,接下来的每一章都是分组件来对tomcat进行介绍。
Servlet容器是如何工作的?
Servlet容器是一个很复杂的系统,主要是用来处理servlet的请求、响应。
- 创建一个Request对象,一个Request对象是javax.servlet.ServletRequest接口或javax.servelt.http.HttpServletRequest的一个实例。
- 创建一个Response对象,一个Response对象是javax.servlet.ServletResponse接口或javax.servlet.http.HttpServletResponse的一个实例。
- 调用servlet的service方法,传入request和response对象。在这里会从request取值,给response写值。
Catalina架构图
Catalina是一个非常复杂的,并优雅设计开发出来的软件,它也是模块化的。
可以简单的先理解Catalina由两个模块组成:连接器(connector)和容器(container)
连接器
连接器是用来连接容器里面的请求的。它的工作是为接收到的HTTP请求构造request和reponse对象,然后把流程传给容器。
容器
容器接收到request和response对象之后,调用servlet的service方法用于响应。