2.TOMCAT Connector分析

由上章内容我们大致可以知道一个请求发送到Tomcat之后,首先经过Service然后会交给我们的Connector,Connector用于接收请求并将接收的请求封装为Request和Response来具体处理,Request和Response封装完之后再交由Container进行处理,Container处理完请求之后再返回给Connector,最后在由Connector通过Socket将处理的结果返回给客户端,这样整个请求的就处理完了!

Connector最底层使用的是Socket来进行连接的,Request和Response是按照HTTP协议来封装的,所以Connector同时需要实现TCP/IP协议和HTTP协议!

Tomcat既然处理请求,那么肯定需要先接收到这个请求,接收请求这个东西我们首先就需要看一下Connector!

四、Connector架构分析

Connector用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。

因此,我们可以把Connector分为四个方面进行理解:

image.png

首先看一下Connector的结构图,如下所示:

image.png

Connector就是使用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型,比如:Http11Protocol使用的是普通Socket来连接的,Http11NioProtocol使用的是NioSocket来连接的。

其中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进行处理。

至此,我们应该很轻松的回答(1)(2)(3)的问题了,但是(4)还是不知道,那么我们就来看一下Container是如何进行处理的以及处理完之后是如何将处理完的结果返回给Connector的?

请看下一章。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 WEB服务端综述部分2 Nginx部分3 Tomcat部分 1 WEB服务端综述部分 1.1 什么是WEB服务...
    艾剪疏阅读 5,530评论 0 5
  • 来源:公众号 Java后端技术 一、Tomcat顶层架构 先上一张Tomcat的顶层结构图(图A),如下: Tom...
    李小斌_2018阅读 2,454评论 0 1
  • 一、Tomcat顶层架构 先上一张Tomcat的顶层结构图(图A),如下: omcat中最顶层的容器是Server...
    angeChen阅读 3,520评论 1 8
  • 听说《欢乐颂》正在拍第二季,剧中关雎尔摘掉了眼镜,变得腹黑。这样的大反转太像我们。像每一个从小白变成满腹心思的成年...
    洽北北阅读 5,319评论 0 2
  • 都说社会是大染缸,其实染缸的不是社会,而是人心,有些人为了保护自己,不得不装上厚厚的外壳,使自己内心强大。 有些人...
    Reachel风淡云轻阅读 1,820评论 0 1