tomcat核心组件
目录
1 tomcat核心功能说明
2 tomcat核心组件说明
2.1 Sever组件
2.2 Service组件
2.3 Connector组件
2.4 Container组件
2.4.1 Engine容器
2.4.2 Host容器
2.4.3 Context容器
2.4.3 Wrapper容器
3 tomcat核心组件关系
4 tomcat处理客户端请求流程
1 tomcat核心功能说明
- 处理socket连接,选择I/O模型使用NIO,AIO还是APR
- 协议解析为tomcat request对象,解析的协议是http还是ajp
- 根据请求内容,匹配到对应的Servlet对象,处理请求并返回响应
2 tomcat核心组件说明
2.1 Sever组件
- 整个tomcat服务
- 包含多个Service组件
- 负责启动和管理Service
- 同时监听8005端口发过来的SHUTDOWN指令,用于关闭整个tomcat服务
2.2 Service组件
- 包含多个用于接收客户端连接的Connector组件,和处理请求的Engine组件,以及线程池Executor组件
- 一个Server组件内可以配置多个Service组件,实现不同端口访问同一台机器上的不同应用
2.3 Connector组件
- tomcat与客户端的连接器,监听固定端口接收客户端请求
- 将请求转发给Container组件,并将响应返回给客户端
2.4 Container组件
- tomcat中,容器是用来承载Servlet的
- tomcat设计了Engine,Host,Context和Wrapper四种容器
- 这四种容器是父子关系
2.4.1 Engine容器
- 引擎容器
- tomcat的顶层容器,用来管理多个虚拟站点
- 一个Service最多只能有一个Engine
2.4.2 Host容器
- 虚拟主机容器
- 负责web应用的部署和Context的创建
- 一个Engine中可以配置多个虚拟库主机,并且一个虚拟库主机下可以配置多个web 应用程序
2.4.3 Context容器
- Web应用上下文,包含多个Wrapper
- 负责web配置的解析,管理所有的web资源
- 一个Context对应一个web应用程序
2.4.3 Wrapper容器
- 表示一个Servlet,最底层的容器
- 对Servlet的封装,负责Servlet实例的创建,执行和销毁
3 tomcat核心组件关系
- Server组件相当于整个tomcat服务
- Service组件用于整合Connector,Engine容器,线程池
- Connector用于接收客户端连接并接受请求数据
- 客户端请求时直接连接具体端口,即可定位到具体的Service组件
- 线程池用于异步执行客户端请求
- 在Connector中配置executor用于指定异步执行请求时使用哪个连接器
- Engine用于匹配到客户端请求对应的Servlet并执行请求
- 通过Mapper组件匹配客户端请求对应的Host组件,Context组件,Wrapper组件
4 tomcat处理客户端请求流程
- 客户端发送请求时连接指定端口,可以定位到具体的Service,即可匹配到Engine容器
- CoyoteAdapter通过Mapper组件匹配到对应的Host,Context,Wrapper组件