TOMCAT原理
一、TOMCAT的基本架构二、Coyote连接器三、Catalina容器四、启动流程介绍五、请求处理流程介绍六、Jasper引擎七、服务器配置1、Server、Service2、Executor3、Connector4、Engine、Host5、Context...
一、TOMCAT的基本架构
1、servlet基本架构
由servlet容器加载servlet类,决定调用哪个servlet也就是业务类。整体遵守的就是servlet规范。
2、Servlet容器工作流程
当请求由http服务器转发给Servlet容器后,servlet会根据url的映射关系,定位到servlet。
- 定位servlet
- 加载servlet
- 调用servlet
3、tomcat架构
两部分核心:
- 处理socket连接,负责处理网络请求 - Connector
- 加载和管理servlet,以及处理request请求 - Container
二、Coyote连接器
1、Coyote
Coyote作为独立的模块,只负责集体协议和IO操作,与Servlet规范没有直接关系,因此Request和Response也与Servlet没有关系。这样就做到了组件之间的解藕。
支持的IO模型:
- NIO:非阻塞IO,采用java NIO类库实现
- NIO2:一步IO,采用JDK7最新的NIO2类库实现
- APR:采用apache的可以值类库实现
支持的应用层协议:
- HTTP1.1:这是大部分web采用的访问协议
- AJP:用于和Web服务器即成,以实现对静态资源的优化和集群部署
- HTTP2:下一代HTTP协议,性能大幅度提升
tomact容器支持多种IO模型和应用层模型。每个容器可以连接多个Coyote。所以一个coyote+catalina才能对外提供服务,也就是一个service。
2、Coyote组件的架构
- EndPoint:接受socket请求,发送给Processor
- Processor:将socket请求,封装为http请求,request转发给Adapter
- Adapter:由适配器将request对象封装成servletRequest转发给容器
- ProtocolHandler: EndPoint+Processor
三、Catalina容器
1、Catalina容器
Catalina是Tomcat的servlet容器。包含了后面涉及到的安全、会话、集群、管理的Servlet容器架构的各个方面。
Tomcat本身就是一个servlet容器,所以Catalina就是tomcat的核心。其它的模块都是为Catalina容器进行提供服务的。
2、Catalina结构
- Catalina:负责解析Tomcat配置文件,以此来创建服务器Server组件,并根据命令管理
- Server:表示整个Catalina Servlet容器及其它组件,负责启动Servlet引擎,tomcat连接器
- Service:将Connector和Container绑定到一期
- Connector:连接器
- Container:servlet容器
- Service:将Connector和Container绑定到一期
3、Container结构
Container包含了Engine、Host、Context、Wapper,它们不是平行关系,而是父子关系。
- Engine:表示整个Catalina的Servlet的引擎,一个Service只能包含一个Engine
- Host:代表一个虚拟主机或者一个站点,可以个给Tomcat配置多个虚拟主机
- Context:代表一个web应用,一个应用可以有多个Context
- Wapper: 代表一个Servlet
其实在server.xml中就包含了以上的各个组件和它们之间的关系。
四、启动流程介绍
父组件启动同时调用子组件的启动方法。记载tomcat的配置文件,初始化容器组件,监听对应的端口号,准备接受客户端请求。
在tomcat,所有的功能都被抽象成组件,他们都有一个统一的接口,就是Lifecycle接口,它的核心方法有:
- init():初始化组件
- start():启动组件
- stop():停止组件
- destroy():销毁组件
个组件默认实现如下:
五、请求处理流程介绍
1、请求处理流程
tomcat是使用mapper组件,进行请求的映射。可以看成是一个多层次的map。
六、Jasper引擎
1、简介
主要作用就是解析jsp页面,然后生成class字节码,向浏览器输出HTML。由于使用的越来越少了,在这里就不进行过多介绍。
2、编译方式
- 运行时编译:请求第一次的时候,进行编译
- 预编译:启动项目的时候,直接编译完成
七、服务器配置
1、核心配置文件server.xml
是tomcat服务器的核心配置文件,包含了tomcat中servlet(Catalina)容器的全部配置。
- Server:根标签,配置关闭端口,配置相关的监听器、全局命名和多个Service
- Service:服务名字就是Catalina,可以配置多个连接器、一个Engine
- Executor:配置tomcat线程池相关内容,如果配置则多个连接器使用一个,否则每个连接器使用自己的线程池
- Connector:连接器,可以配置port、protocol、conectionTimeout、redirectProt(https)、executor、encoding
- Engine:name、defaultHost(默认主机)、jvm(使用的虚拟机)
- Host:name、appBase(部署路径)、unpackWARs(是否解压WAR包)、autoDeploy(是否自动部署)
- Context:虚拟主机中的项目
更多推荐
所有评论(0)