Tomcat框架架构知识图谱
2020-06-08 10:26:21 2 举报
Tomcat架构图
作者其他创作
大纲/内容
Browser
Value A
Context A
Enginer Pipeline
Wrapper A
HTTP协议
Endpoint通信监听的接口
Tomcat服务器架构图
Context B
...
Context Value
Host Value
RequestResponse
Error Report Value
Wrapper C
Adapter
Engine
Host C
Processor协议处理接口
Juli(服务器日志)
Connector B
JMX
其中ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter。(1)Endpoint用来处理底层Socket的网络连接,Processor用于将Endpoint接收到的Socket封装成Request,Adapter用于将Request交给Container进行具体的处理。(2)Endpoint由于是处理底层的Socket网络连接,因此Endpoint是用来实现TCP/IP协议的,而Processor用来实现HTTP协议的,Adapter将请求适配到Servlet容器进行具体的处理。(3)Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。Acceptor用于监听请求,AsyncTimeout用于检查异步Request的超时,Handler用于处理接收到的Socket,在内部调用Processor进行处理。
Service A
Wrapper Value
Container处理请求使用的是Pipeline-Valve管道来处理Pipeline: 管道 Valve:阀门Pipeline-Value使用的是责任链模式,在一个request请求的过程中有很多处理者对请求进行处理,每个处理者负责做自己相应的处理,处理完后将处理的请求返回,再让下一个处理者继续处理。Pipeline-Valve使用的责任链模式和普通的责任链模式有些不同!区别主要有以下两点:(1)每个Pipeline都有特定的Valve,而且是在管道的最后一个执行,这个Valve叫做BaseValve,BaseValve是不可删除的;(2)在上层容器的管道的BaseValve中会调用下层容器的管道。Container包含四个子容器,而这四个子容器对应的BaseValve分别在:StandardEngineValve、StandardHostValve、StandardContextValve、StandardWrapperValve。
Wrapper B
Servlet
Value B
Pipeline
HTTPS协议
* Engine: 用来管理多个站点,一个Service只有一个Engine* Host: 虚拟主机,代表一个站点,通过配置Host就可以添加站点* Context:代表一个应用程序,对应着平时开发的一套程序,或者一个WEB-INF目录以及下面的web.xml文件* Wrapper:每一个Wrapper封装着一个Servlet
Host A
Connector C
Context C
Host B
Container
Filter Chain
Connector A
Server服务器
Protocol Handler
Executor(并发相关)
其他协议
Context Pipeline
Host Pipeline
Service B
(1)Connector在接收到请求后会首先调用最顶层容器的Pipeline来处理,这里的最顶层容器的Pipeline就是EnginePipeline(Engine的管道);(2)在Engine的管道中依次会执行EngineValve1、EngineValve2等等,最后会执行StandardEngineValve,在StandardEngineValve中会调用Host管道,然后再依次执行Host的HostValve1、HostValve2等,最后在执行StandardHostValve,然后再依次调用Context的管道和Wrapper的管道,最后执行到StandardWrapperValve。(3)当执行到StandardWrapperValve的时候,会在StandardWrapperValve中创建FilterChain,并调用其doFilter方法来处理请求,这个FilterChain包含着我们配置的与请求相匹配的Filter和Servlet,其doFilter方法会依次调用所有的Filter的doFilter方法和Servlet的service方法,这样请求就得到了处理!(4)当所有的Pipeline-Valve都执行完之后,并且处理完了具体的请求,这个时候就可以将返回的结果交给Connector了,Connector在通过Socket的方式将结果返回给客户端。
其他程序
Naming(命名服务)
Engine Value
Jasper(JSP引擎)
0 条评论
下一页