Tomcat 是一个 Web 容器,包含 HTTP 服务器 + Servlet 容器。
Web 容器的两个核心功能:
- 处理 Socket 连接,处理网络字节流与 Request 和 Response 对象的转化
- 加载和管理 Servlet,处理 Request 请求
Tomcat 的两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外连接,容器负责内部对请求的处理。
Tomcat 的核心模块:
- Server:Catalina Servlet 容器。Tomcat 提供了 Server 接口的一个默认实现,通常不需要用户自己去实现。在 Server 容器中,可以包含一个或多个 Service 组件。
- Service:存活在 Server 内部的中间组件,它将一个或多个连接器(Connector)组件绑定到一个单独的引擎(Engine)上。Service 也很少由用户定制,Tomcat 也提供了 Service 接口的默认实现。
- Connector:连接器,处理与客户端的通信,它负责接收客户请求,以及向客户返回响应结果。在 Tomcat 中,有多个连接器可以使用。
- Engine:Servlet 引擎,表示一个特定的 Service 的请求处理流水线,从连接器接收和处理所有的请求,将响应返回给适合的连接器,通过连接器传输给用户。在 Tomcat 中,每个 Service 只能包含一个 Engine。可以通过实现 Engine 接口提供自定义的引擎。
- Host:一个虚拟主机,一个引擎可以包含多个 Host。Tomcat 给出了Host 接口的默认实现 StandardHost。
- Context:一个 Web 应用程序,运行在特定的虚拟主机中。一个 Host 可以包含多个Context,每个 Context 都有一个唯一的路径。通常不需要创建自定义的 Context,Tomcat 给出了Context 接口的默认实现 StandardContext。