Tomcat是一个HTTP服务器又是一个Servlet容器
结构示意图如下:
可见,Tomcat既按照Servlet规范的要求去实现了Servlet容器,同时它也具有HTTP服务器的功能。由此Tomcat包含了两大组件:
Http服务器 => 连接器组件(Connector)
Selvet容器 => 容器组件(Container) 。
Tomcat的连接器组件(Connector) —— Coyote
Coyote负责对外交流,处理Socket连接,负责字节流与Request和Response对象的转化。Tomcat提供了多种应用层协议和I/O模型
应用层:HTTP1.1(默认)、HTTP2、AJP
IO模型:NIO(默认)、NIO2、APR
Tomcat的容器组件(Container) —— Catalina
Catalina 是一个大的容器,负责加载和管理Servlet容器,它是Tomcat的核心,一个Tomcat运行起来就是一个Catalina实例。
Server:
一个Server就是一个Catalina实例包含多个Sevice(Servlet容器)
Service:
一个Service可包含一个Engine(引擎)和多个Connector(连接器)
Engine:引擎,用来处理请求
一个Engine可包含多个Host
Host:虚拟主机
一个Host可包含多个Context
Context:应用程序
一个Context可包含多个Warpper(Servlet)
如下图所示: