Tomcat 工程分层架构 其实比较简答,从源码中也是比较容易知晓
阅读配置文件 server.xml
可以直接获取到 Tomcat整体 架构模式
配置文件,xml,每个节点代表了一个组件,组件是一个对象=>所以每个节点都是一个对象,节点里的属性是啥?对象的属性
<!-- Tomcat服务 -->
<Server port="8005" shutdown="SHUTDOWN">
<!-- 服务 -->
<Service name="Catalina">
<!-- 连接器 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- 引擎 -->
<Engine name="Catalina" defaultHost="localhost">
<!-- 主机 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 上下文 改代码未出现在配置文件里 但时间工作时有配置过该标签的 -->
<Context path="/samples" docBase="D:\sdf\samples\WebRoot" debug="0" reloadable="true">
</Context>
</Host>
</Engine>
</Service>
</Server>
分析架构图
Context 架构图
完整的Tomcat 链路架构图
其中 lifecycle 生命周期 全程贯穿 Tomcat服务, 观察者模式用于监听生命周期内的各个环节
- 在Tomcat Server 中包含了一些监听器,其中也监听了 Tomcat生命周期
- Service服务组件 中 又分别 包含了 包含了 Connector(连接器)
- Connector(连接器) 线程池(我们都知道Tomcat针对不同的Web请求是单独开辟线程的嘛)
- Engine(引擎)组件 用于统一管理下属相关组件
- Host 组件(主机)
- Context组件(上下文,即一个Web应用)
- Wrapper 包装器
- Servlet 请求
- Wrapper 包装器
- Context组件(上下文,即一个Web应用)
- Host 组件(主机)