Tomcat容器结构 = 四大容器 + 连接器

Tomcat容器结构 = 四大容器 + 连接器

在这里插入图片描述

执行顺序:

浏览器 -> tomcat server-> service ->connector -> engine(引擎) -> host(主机) -> web应用

Server:

Tomcat中最顶层的容器是Server,代表着整个服务器,一个Tomcat中只有一个Server从上图中可以看出,一个Tomcat中只有一个Server,用于具体提供服务,且整个 Tomcat 的生命周期由 Server 控制。
一个Server可以包含多个Service。

Service:

Service主要包含两个部分:Connector和Container。即:Tomcat容器结构 = 四大容器 + 连接器, Tomcat 的心脏就是这两个组件,他们的作用如下:
1、Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;
2、Container用于封装和管理Servlet,以及具体处理Request请求;
一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,也可以提供向相同协议不同端口的连接。

Connector:

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

Connector的结构图:
在这里插入图片描述

ProtocolHandler + Acceptor 来完成接受请求和交互给Container的工作的,具体来书,Connector由包含了三个部件:Endpoint、Processor、Adapter。

  • ProtocolHandler
    (1)AbstractEndpoint
    AbstractEndpoint具体实例是Endpoint,Endpoint用来处理底层Socket的网络连接,在AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。
    Acceptor用于监听请求.
    Handler用于处理接收到的Socket,在内部调用Processor进行处理。
    AsyncTimeout用于检查异步Request的超时.
    (2)Processor
    Processor用于将Endpoint接收到的Socket封装成Request。

    注意:Endpoint 和 Processor他们处理的协议是不同的。
    Endpoint由于是处理底层的Socket网络连接,因此Endpoint是用来实现 TCP/IP协议的。
    Processor用来实现HTTP协议的。

  • Adapter
    Adapter用于将Request交给Container进行具体的处理。就是将Request请求适配到Servlet容器进行具体的处理过程。

Container容器( Tomcat的四大容器:Engine、Host、Context、Wrapper)

Container的结构图:
在这里插入图片描述

Engine:

Engine用来管理多个站点,一个Service最多只能有一个Engine;
Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的Catalina。Engine需要defaultHost属性来为其定义一个接收所有请求的虚拟主机host组件。

Host:

Host代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点;
Host是Engine的子容器。一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用、接收并处理请求、保存一个主机应该有的信息。

Context:

一个Context代表一个应用程序,或者一个WEB-INF目录以及下面的web.xml文件。
Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个 Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request 来分配的

Wrapper:

每一Wrapper封装着一个Servlet;
一个Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括Servlet 的装载、初始化、执行以及资源回收。
Wrapper 是最底层的容器。
Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了 ServletConfig,由此看出 StandardWrapper 将直接和 Servlet 的各种信息打交道。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值