Tomcat源码分析
一、Tomcat模块分析
-
Server
代表tomcat服务(一个)
-
Service
逻辑层(在一个server中可以允许有多个service)
-
Connector
处理连接(接收请求)
-
Container
connector接收的请求在Container完成业务处理
Engin 表示整个Servlet引擎
Host 虚拟主机 对包进行自动解压、开启自动部署等功能
Context 带表每一web应用程序、
Wrapper 代表Http请求
二、Tomcat源码分析
2.1 Tomcat主流程分析
当客户端浏览器发送请求给服务器,服务器接受并处理请求然后返回给客服端。
Tomcat是初始化是怎么完成的呢?
BootStarp #init() --Catalina #init() --Server#init() --> Service#init()—>Executor#init()–》 Engine#init()–>> Host()#init()- >Context#init()–>Connector#init()–>> ProtocalHandler#init()
-
BootStarp# init() Tomcat启动的主入口
-
Catalina#init()
-
Server#init()
-
Executor#init()
-
Host#init()
-
Context#init()
-
Connector#init()
-
ProtocalHandler#init
Tomcat启动分析
BootStarp #start() --Catalina #start() --Server#start() --> Service#start()—>Executor#start()–>> Host()#start()- >Context#start()–>Connector#start()–>> ProtocalHandler#start()
2.2 Tomcat源码深度分析
-
ProtocalHandler 采用了组件模式设计主要作用,将处理网络连接,字节流封装成Request对象,再将Request适配成Servlet处理ServletRequest对象、
Endpoint:封装底层的socket网络请求。
Processor 他socket字节流封装成Request对象
Adapter 将Request对象适配成容器能够识别的Request对象
-