Tomcat架构原理
2021-04-14 13:38:44 5 举报
深刻理解Tomcat底层原理,容器内如何进行流转
作者其他创作
大纲/内容
架构核心部件
处理结束
Servlet
servlet.service
V
Vavle
el表达式解析
Context/docs
Host guigu66.com
Service[](真正给Tomcat提供功能)StandardService处理HTTP请求的
GlobalNamingResources
子容器
connector.调用容器
NonLoginAuthenticator
Connector8080
StandardHostValve
Context /docs webapp
pipeline
Listener
StandardXXXX标准实现
Pipeline pipeline = new StandardPipeline(this);
Catalina控制服务器的人
Hostlocalhost
addValve(Valve valve);
允许我们监听整个生命周期
Worker
Connector
Executor
StandardContextValve判断是否受保护是否没有映射....WEB-INF
Connector8443
容器Container
8-16个逻辑处理器 16压力测试 空载请求 hello
ProtocolHandler
Coyote连接器与协议适配
Wrapper/xxx
Host localhost
ContainerWrapper 保存Servlet信息
都要经历每一层容器的管道,里面的所有阀门来干预,阀门机制是Tomcat中,控制数据流向处理的核心,利用阀门类似Filter来做预处理
next
getHost
Catalina容器核心
AccessLogValve
请求
Wrapper/world
Context/root
Engine
Boss
StandardEngineValve
Context /other webapp
容器的特点:1、addChild(Container child); 有子容器2、Container getParent(); 有父容器3、Pipeline getPipeline();有管道4、Pipeline里面有Valve阀门,阀门可以预处理请求
ErrorReportValve
tomcat基础服务
Server(整个Tomcat服务器)StandardServer
Request
Context /world webapp一个web应用就是一个Context
Hostguigu66.com
Context /hello_test webapp
StandardWrapperValve创建Servlet对象初始化Servlet对象准备Filter链,先执行Filter链执行servlet.service
都具有生命周期
Host
Server{ Service[]{:服务 Connector[]:监听端口 Engine:{:控制处理逻辑 Host[] {:虚拟主机,映射域名 Context[]{:代表web应用 Wrapper[]{:每一个Wrapper封装一个Servlet的配置详情 } } } } } }localhost:8080/docs/xxxguigu66.com:8080/hello_test/hello
提供了JNDI的实现
CoyoteAdapter.service()处理请求
Context/hello_test
Context
http://localhost:8080/atguigu/hello
juli日志服务
ServletClassurl-pattern....
CoyoteAdapter
Wrapper/hello
public Valve[] getValves();
Context/manager
Wrapper
naming命名服务
Tomcat核心组件的架构层次
abstract容器基类ContainerBase
Wrapper封装了Servlet映射信息
Wrapper每个Servlet是一个
ServiceEngine
xxxValve
jasperJSP解析
定义了Servlet生命周期的步骤
LifecycleBase;利用模板模式,定义好算法步骤,核心位置留给组件自己实现即可
getWrapper
getContext
0 条评论
下一页