码迷,mamicode.com
首页 > 其他好文 > 详细

tomcat之Connector的结构

时间:2018-10-04 10:58:56      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:connect   ali   nta   ros   ase   strong   web   family   ios   

Connector的结构

Connector中具体用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型(如Http11Protocol使用普通的Socket来连接,Http11NioProtocol使用NioSocket连接)

ProtocolHandler的三个重要组件:Endpoint(用于处理底层Socket的网络连接,用来实现TCP/IP协议) Processor(用于将Endpoint接收到的Socket封装成Request,用来实现HTTP协议) Adapter(用于将Request交给Container进行具体处理,即将请求适配到Servlet容器)

Endpoint的抽象实现AbstractEndpoint中定义了两个内部类Acceptor(监听请求)和AsyncTimeout(检查异步request的超时)和一个接口Handler(处理接收到的Socket在内部调用Processor进行处理)

技术分享图片

NioEndpoint继承自AbstractEndpoint,新添加了Poller和SocketProcessor内部类(放在在上图的Acceptor和Handler之间)

 

Processor的两个抽象继承类:

 

org.apache.coyote.AbstractProtocol(正常处理协议使用的)

org.apache.coyote.http11.upgrade.AbstractProtocol(Servlet3.1后新增,用于处理HTTP的升级协议,指WebSocket协议)

具体实现应用层协议处理请求的是AbstractAjpProsessor和AbstractHttp11Prosessor中的process()方法

 

适配器Adapter只有一个实现类org.apache.catalina.connector.CoyoteAdapter

Processor的process()会调用Adapter的service()来处理请求,Adapter的service()主要调用Container管道中的invoke()方法来处理请求(管道将逐层调用各层容器中Value的invoke(),直到最后调用Wrapper管道中的BaseValue/StandardWrapperValue来处理Filter和Servlet)

 

tomcat之Connector的结构

标签:connect   ali   nta   ros   ase   strong   web   family   ios   

原文地址:https://www.cnblogs.com/code2038/p/9739934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!