首页 > 其他 > 详细

tomcat之Connector的结构

时间:2018-10-04 08:00:48      阅读:130      评论:0      收藏:0      [点我收藏+]

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的结构

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!