Tomcat整体架构浅析

569 阅读2分钟

整体结构

架构图:

image.png

tomcat模块分层示意图:

image.png

各组件解释

Server是Tomcat的最顶层元素,是service的集合,即可包含多个service,Server控制整个Tomcat的生命周期。

Service由一个Container和多个Connector组成,形成一个独立完整的处理单元,对外提供服务。 conf/server.xml默认配置了一个“Catalina”的Service。

Tomcat将Engine,Host,Context,Wrapper统一抽象成Container。 Connector接受到请求后,会将请求交给Container,Container处理完了之后将结果返回给Connector。

Container的结构:

image.png

image.png

Engine:没有父容器,一个 Engine代表一个完整的 Servlet 引擎,它接收来自Connector的请求,并决定传给哪个Host来处理,Host处理完请求后,将结果返回给Engine,Engine再将结果返回给Connector。

Host:Engine可以包含多个Host,每个Host代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们,每个虚拟主机对应的一个域名,不同Host容器接受处理对应不同域名的请求。

Context:Host可以包含多个Context,Context是Servlet规范的实现,它提供了Servlet的基本环境,一个Context代表一个运行在Host上的Web应用。

Wrapper: Context可以包含多个Wrapper, Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild将会报错。

Tomcat还有其它组件,如安全组件security、logger、session、naming等其它组件。这些组件共同为Connector和Container提供必要的服务。

组件包含关系

image.png

组件的生命线Lifecycle

Tomcat中很多组件具有生命周期,如初始化、启动、关闭,这些组件的生命周期具有共性,因此Tomcat中将其抽象为接口Lifecycle,来控制组件的生命周期,它通过 事件机制 实现各个容器间的内部通讯。

image.png

StandardServer,StandardService,Connector和上面4个容器等很多组件都实现了Lifecycle,组件实现这个接口就可以统一被拥有它的组件控制了,这样一层一层的直到一个 最高级的组件 就可以控制 Tomcat 中所有组件的生命周期,这个最高的组件就是 Server。

参考文章:blog.csdn.net/cx520foreve…