原来tomcat是这么玩的(一)基本组件结构

4 篇文章 0 订阅

本系列都是基于tomcat8.5.53

组成

tomcat是一个webServer服务器,里面的核心组件是Server,server是由多个service组成,每个service主要有Connector(连接器),Container(容器),Mapper(管理connectort与容器的关系)这3个组件

在这里插入图片描述

Container 容器

tomcat中的容器分为engine,Host,Context,Wrapper(Servlet)他们之间是包含关系层层递进,engine的子容器是host,host的子容器是context,context的子容器是wrapper。
对于每一个service而言,他只有一个engine,但是一个engine可以有多个context
在这里插入图片描述

Engine

对于一个service而言有且只有有一个engine

Host

对于一个engine而言可以有多个host,而每个host又可以有他们各自的Context,默认的Host为localhost

Context

context 实际上就是我们的一个webApp应用了

Wrapper

wrapper实际上就是对我们的servlet的一个封装,FilterChain就是通过Wrapper实现的。

Connector连接器

名称作用
Endpoint监听请求
ProtocolHandler根据不同类型的协议获取processor
Processor处理请求
CoyoteAdapter封装请求对象,并且根据mapper找到对应的host,context,wrapper

在这里插入图片描述

Endpoint

endpoint的主要作用是监听请求,其中主要包含Acceptor,Poller,Processor(Worker) 3个角色,在这个类里面实现了对请求的包装和分发。

角色名作用
Acceptor监听请求
Poller包装请求、选择处理这个请求的Processor
Processor处理请求,注意 这里的Processor是SocketProcessorBase的子类实现而不是上图中ProtocolHandler选择的processor
ProtocolHandler

从名字上我们就可以看出这个类的作用,协议处理器,对于不同的协议是需要不同的Processor来处理的,ProtocolHandler的作用就是根据当前包装的请求找到对应的Processor。

Processor

针对于不同的协议此类又不同的实现类,它主要的作用是根据协议做一些对应的处理,封装请求(org.apache.coyote.Request)和响应对象(org.apache.coyote.Response),处理完毕后此类里面实现了通过CoyoteAdapter传递请求到对应的容器中。

CoyoteAdapter

这个适配器中干的事情就比较重要了,

  1. 将processor中封装的org.apache.coyote.Request 和org.apache.coyote.Response封装为我们熟悉的HttpServletRequest和HttpServletResponse
  2. 根据当前的connector找到对应的service,根据service中的mapper对象找到此次请求需要调用的host、context、wrapper容器
  3. 根据找到的Engine的PipeLine开始层层调用。具体的流程过于复杂,在后面的章节再详细描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值