IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> tomcat知识点笔记 -> 正文阅读

[网络协议]tomcat知识点笔记

tomcat 顶层架构

如图:
在这里插入图片描述
Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一 个Server可以包含至少
一个Service,即可以包含多个Service,用于具体提供服务。Service主要包含两个部分:Connector和 Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:
Connector用于处理连接相关的事情,并提供Socket与Request请求和 Response响应相关的转化; Container用于封装和管理Servlet,以及具体处理Request请求;
一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个 Service只有一个Container,
但是可以有多个Connectors,这是因为一个服务 可以有多个连接,如同时提供Http和Https链接,也可
以提供向相同协议不同端口的连接。总结如下:

  1. Tomcat中只有一个Server,一个Server可以有多个Service,一个 Service可以有多个Connector和
    一个Container;
  2. Server掌管着整个Tomcat的生死大权;
  3. Service 是对外提供服务的;
  4. Connector用于接受请求并将请求封装成Request和Response来具体 处理;
  5. Container用于封装和管理Servlet,以及具体处理request请求;

由上述内容我们大致可以知道一个请求发送到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就是使用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进行处理。

tomcat connector有哪几种模式

  1. BIO,同步并堵塞。一个线程处理一个请求。
  2. NIO,同步非堵塞,通过多路复用实现一个线程处理多个请求。
  3. ARP(apache portable runtime),使用AIO,默认启动方式。

tomcat container

在这里插入图片描述
container架构如上图所示。
4个子容器的作用分别是:

  1. Engine:引擎,用来管理多个站点,一个Service最多只能有一个 Engine;
  2. Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加 站点;
  3. Context:代表一个应用程序,对应着平时开发的一套程序,或者一个 WEB-INF目录以及下面的web.xml文件;
  4. Wrapper:每一Wrapper封装着一个Servlet

Context和Host的区别是Context表示一个应用,我们的Tomcat中默认的配置 下webapps下的每一个文件夹目录都是一个Context,其中ROOT目录中存放着 主应用,其他目录存放着子应用,而整个webapps就是一个Host站点。
我们访问应用Context的时候,如果是ROOT下的则直接使用域名就可以访问, 例如:www.baidu.com,如果是Host(webapps)下的其他应用,则可以使 用www.baidu.com/docs进行访问,当然默认指定的根应用(ROOT)是可以 进行设定的,只不过Host站点下默认的主应用是ROOT目录下的。

Container处理请求是使用Pipeline-Valve管道来处理的!(Valve是阀门之意)
Pipeline-Valve是责任链模式,责任链模式是指在一个请求处理的过程中有很多 处理者依次对请求进行处理,每个处理者负责做自己相应的处理,处理完之后将 处理后的结果返回,再让下一个处理者继续处理。
但是!Pipeline-Valve使用的责任链模式和普通的责任链模式有些不同!区别主 要有以下两点:

  1. 每个Pipeline都有特定的Valve,而且是在管道的最后一个执行,这个 Valve叫做BaseValve,BaseValve是不可删除的;
    在上层容器的管道的BaseValve中会调用下层容器的管道。
  2. 我们知道Container包含四个子容器,而这四个子容器对应的BaseValve分别在:StandardEngineValve、StandardHostValve、StandardContextValve、StandardWrapperValve。
    Pipeline的处理流程图如下(图有点问题,后面几个不是StandardEngineValve)):
    在这里插入图片描述
  • Connector在接收到请求后会首先调用最顶层容器的Pipeline来处理,这里的最顶层容器的Pipeline就是EnginePipeline(Engine的管道);
  • 在Engine的管道中依次会执行EngineValve1、EngineValve2等等, 最后会执行StandardEngineValve,在StandardEngineValve中会调用 Host管道,然后再依次执行Host的HostValve1、HostValve2等,最后在 执行StandardHostValve,然后再依次调用Context的管道和Wrapper的 管道,最后执行到StandardWrapperValve。
  • 当执行到StandardWrapperValve的时候,会在 StandardWrapperValve中创建FilterChain,并调用其doFilter方法来处理请求,这个FilterChain包含着我们配置的与请求相匹配的Filter和Servlet,其doFilter方法会依次调用所有的Filter的doFilter方法和Servlet 的service方法,这样请求就得到了处理!
  • 当所有的Pipeline-Valve都执行完之后,并且处理完了具体的请求, 这个时候就可以将返回的结果交给Connector了,Connector在通过 Socket的方式将结果返回给客户端。

tomcat其他知识点

tomcat和双亲委派机制

tomcat中,每个web应用都会对应一个类加载器。和一般的双亲委派机制不同的是:它首先尝试去加载某个类如果找不到再代理给父类加载器(java核心库除外)。这样做的目的是Web应用自己的类大于Web容器提供的类。

tomcat部署方式

  1. 自动部署。tomcat启动时会自动加载webapps目录下的应用。
  2. manager app控制台部署。可指定web应用的路径或war文件。
  3. conf/server.xml文件部署
  4. 在conf/Catalina/localhost/路径下增加web部署文件部署。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 21:05:20  更:2022-02-09 21:05:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:51:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码