一、tomcat架构图、组件介绍
1、架构图
上述组件都可以在server.xml中配置
<Server>
<Service>
<Connector />
<Connector />
<Engine>
<Host>
<Context />
</Host>
</Engine>
</Service>
</Server>
2、组件模块介绍
(1)Connector
Connector接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。
一般server.xml默认配置、其中可以设置协议
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
**HTTP/1.1代表bio,nio可以手动设置类的全限定名 org.apache.coyote.http11.Http11NioProtocol,AJP连接器可以通过AJP协议和另一个web容器进行交互**
(2)容器
Engine、Host、Context、Wrapper(其实就是存放Servlet)
Engine
表示整个Catalina的Servlet引擎,用来管理多个虚拟站点,一个Service最多只能有一个Engine, 但是一个引擎可包含多个Host
Host
代表一个虚拟主机,或者说一个站点,可以给Tomcat配置多个虚拟主机地址,而一个虚拟主机下可包含多个Context
Context
表示一个Web应用程序, 一个Web应用可包含多个Wrapper
Wrapper
表示一个Servlet,Wrapper 作为容器中的最底层,不能包含子容器
二、tomcat启动流程、处理请求过程、热加载流程等
(1)tomcat启动流程时序图
(2)tomcat接受请求过程、处理请求过程
tomcat正常接受到请求Connector层会把tcp数据解析成封装到org.apache.coyote.Request req然后交给容器Container进行处理,大致流程如下
tomcat处理请求详细过程(以tomcat7 nio为列)
下面通tomcat处理bio
(3)tomcat热加载时序图
版权声明:本文为qq_33590654原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。