一 .tomcat身份:
1. 因为tomcat具有接收并处理http请求的能力,所以tomcat是http服务器。
2.因为tomcat满足servlet接口和协议,所以tomcat也被称为servlet服务器。
二.tomcat系统架构:
为了满足上面的两个身份,tomcat主要功能分为连接器和容器,连接器(connector)用来接收网络层传输的数据,并进行解析后发送给容器container,container收到connector传过来的request对象后定位servlet容器,执行请求,做出响应返回给connector,connector将response对象转成满足http格式的数据包发送给浏览器响应。
tomcat的connector是通过coyote来实现的,容器组件是通过catalina组件实现的。一个tomcat容器只有一个catalina容器,可以由多个coyote同时提供通信服务。
四.tomcat catalina
从另⼀个⻆度来说,Tomcat 本质上就是⼀款 Servlet 容器, 因为 Catalina 才是 Tomcat 的核⼼ , 其他模块都是为Catalina 提供⽀撑的。 ⽐如 : 通过 Coyote 模块提供链接通Jasper模块提供 JSP 引擎,Naming 提供JNDI 服务,Juli 提供⽇志服务。
tomcat容器在启动的时候就会创建一个catalina实例,catalina实例则通过读取server.xml文件创建并管理一个server实例,server实例创建并管理多个服务(service),每个服务可以有多个connector和一个container容器 。
具体配置可以在config/server.xml中配置。请参见下一篇文章。
五.总结:
tomcat容器内部提供支持servlet规范container容器,对外提供了支持http协议和AJP协议的请求connector连接器。tomcat主要目的是对外提供满足servlet规范的服务支持。tomcat启动的时会创建一个Catalina实例,用来解析config/server.xml文件并创建一个server容器对外提供service服务接口。
tomcat通过server容器可以同时管理多个service服务,并且为每个服务提供多个connector支持和一个container容器,每个容器又分层管理着(1个)engine【整个Catalina的Servlet引擎,⽤来管理多个虚拟站点,可以使用<Cluster>标签配置tomcat集群】->(多个)host【虚拟主机】->(多个)context【我们部署在tomcat中的web应用】->(多个)wrapper【我们应用程序中一个servlet的service方法】
-------------------------------部分内容摘自lagou教育学习笔记----------------------