Tomcat工作原理

一、Tomcat架构

在这里插入图片描述### 说明:

  • Server:表示整个 Tomcat Catalina servlet 容器,Server 中可以有多个 Service。(可以通过telenet 8005后连接后输入“SHUTDOWN” 注意这里是大写,来关闭服务
  • Service:表示Connector和Engine的组合,对外提供服务,Service可以包含多个Connector和一个Engine。
  • Connector:为Tomcat Engine的连接组件,支持三种协议:HTTP/1.1、HTTP/2.0、AJP。
  • Container:负责封装和管理Servlet 处理用户的servlet请求,把socket数据封装成Request,传递给Engine来处理。
  • Engine:顶级容器,不能被其他容器包含,它接受处理连接器的所有请求,并将响应返回相应的连接器,子容器通常是 Host 或 Context。
  • Host:表示一个虚拟主机,包含主机名称和IP地址,这里默认是localhost,父容器是 Engine,子容器是 Context。
  • Context:表示一个 Web 应用程序,是 Servlet、Filter 的父容器。
  • Wrapper:表示一个 Servlet,它负责管理 Servlet 的生命周期,并提供了方便的机制使用拦截器。

架构组成-1

在这里插入图片描述

架构组成-2

在这里插入图片描述

二、Catalina结构

说明

Container包含了Engine、Host、Context、Wapper,它们不是平行关系,而是父子关系。

  • Engine:表示整个Catalina的Servlet的引擎,一个Service只能包含一个Engine
  • Host:代表一个虚拟主机或者一个站点,可以个给Tomcat配置多个虚拟主机
  • Context:代表一个web应用,一个应用可以有多个Context
  • Wapper: 代表一个Servlet
    在这里插入图片描述
    在这里插入图片描述
    其实在server.xml中就包含了以上的各个组件和它们之间的关系。
    在这里插入图片描述
    在这里插入图片描述

三、启动流程介绍

在这里插入图片描述
父组件启动同时调用子组件的启动方法。记载tomcat的配置文件,初始化容器组件,监听对应的端口号,准备接受客户端请求。

在tomcat,所有的功能都被抽象成组件,他们都有一个统一的接口,就是Lifecycle接口,它的核心方法有:

  • init():初始化组件
  • start():启动组件
  • stop():停止组件
  • destroy():销毁组件

个组件默认实现如下:
在这里插入图片描述
在这里插入图片描述

四、请求处理流程介绍

1、请求处理流程

tomcat是使用mapper组件,进行请求的映射。可以看成是一个多层次的map。
在这里插入图片描述
在这里插入图片描述

五、服务器配置

1、核心配置文件server.xml

是tomcat服务器的核心配置文件,包含了tomcat中servlet(Catalina)容器的全部配置。

  • Server:根标签,配置关闭端口,配置相关的监听器、全局命名和多个Service
  • Service:服务名字就是Catalina,可以配置多个连接器、一个Engine
  • Executor:配置tomcat线程池相关内容,如果配置则多个连接器使用一个,否则每个连接器使用自己的线程池
  • Connector:连接器,可以配置port、protocol、conectionTimeout、redirectProt(https)、executor、encoding
  • Engine:name、defaultHost(默认主机)、jvm(使用的虚拟机)
  • Host:name、appBase(部署路径)、unpackWARs(是否解压WAR包)、autoDeploy(是否自动部署)

在这里插入图片描述

  • Context:虚拟主机中的项目

在这里插入图片描述

结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20495.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中的 map, forEach 无法跳出循环, return和 break不起作用,可以使用every 和 some方法

在我们平时使用习惯中,for循环里要跳出整个循环是使用break,但在数组中用forEach循环或者map如要退出整个循环使用break会报错,使用return也不能跳出循环,以下我们就来探索一下正确的跳出循环方案 一、先看一下案例 1、forEach函…

通信算法之176: 基于Matlab的OFDM通信系统关键基带算法设计6-流程

一. 接收算法流程 粗同步(分组检测) 载波同步(精细频偏估计) 精同步(OFDM起始,符号同步) 1.4 信道估计(长序列) 1.5 信道均衡(所有数据OFDM符号&#xff…

存css实现动态时钟背景

代码实现 <!DOCTYPE html> <html lang"en"> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>Title</title><meta name"referrer" content"no-referrer…

全球仅他一家!对甲方无情说“不”的顶尖效果图工作室,到底有多牛?

这个建筑&#xff0c;相信上海的小伙伴和喜欢看戏剧表演的朋友肯定不陌生。没错&#xff0c;它就是“上海大歌剧院”。它最大的亮点就是那座通天的旋转楼梯&#xff0c;如同一把展开的扇子&#xff0c;具有浓厚的东方美学特色。 歌剧院的设计构思固然巧妙&#xff0c;但同样离不…

数字化时代:虚拟数字人的智能进化与生活变革

我们需要实现对人工智能的有效监管。政府应该与科技公司合作&#xff0c;建立监管框架&#xff0c;确保人工智能的发展能够在保护人类利益的基础上进行。人工智能的快速发展带来了巨大的机遇&#xff0c;但同时也伴随着一些潜在的风险。如果没有适当的监管措施&#xff0c;人工…

【c++修行之路】智能指针

文章目录 前言为什么用智能指针智能指针简单实现unique_ptrshared_ptr 循环引用和weak_ptr的引入循环引用weak_ptr 定制删除器 前言 大家好久不见&#xff0c;今天来学习有关智能指针的内容~ 为什么用智能指针 假如我们有如下场景&#xff1a; double Div() {int x, y;cin …

STM32+PWM+输入捕获测频

外部时钟&#xff0c;主频64M 定时器1 通道1发出PWM波 频率1K 定时器2 通道1输入捕获&#xff0c;上升沿触发 串口 /* USER CODE BEGIN 0 */ uint32_t time_up_num0;//上升沿计数 float time_frequency;//频率 /* USER CODE END 0 */ 初始换打开定时器 /* USER CODE BEGIN 2 …

mapBox 绘制多边形无法设置 边框宽度 解决方法

目录 一、问题 二、解决方法 三、总结 tips:如嫌繁琐&#xff0c;直接看有颜色的文字即可&#xff01; 一、问题 1.使用mapBox在地图上绘制点、线、面。绘制多边形的时候发现 直接用 zh(一家提供地图引擎的公司),提供的绘制多边形的方法无法设置边框颜色和边框宽度。很是离…

Linux登录时,下游回显非常慢

目录 问题现象 原因分析 解决方法 源码等资料获取方法 问题现象 登录linux时&#xff0c;远程连接正常&#xff0c;[root...]回显非常慢&#xff0c;在执行脚本时&#xff0c;很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大&#xff0c;导致每次登陆时读…

SQLSERVER的truncate和delete有区别吗?

一&#xff1a;背景 1. 讲故事 在面试中我相信有很多朋友会被问到 truncate 和 delete 有什么区别 &#xff0c;这是一个很有意思的话题&#xff0c;本篇我就试着来回答一下&#xff0c;如果下次大家遇到这类问题&#xff0c;我的答案应该可以帮你成功度过吧。 二&#xff1…

特斯拉降价阴影下,智己如何「登高」?

作者 | 刘然 来源 | 洞见新研社 都说背靠大树好乘凉&#xff0c;但背靠上汽集团的智己汽车&#xff0c;反而水深火热。 2021年&#xff0c;在智己正式向外界公布了“豪华纯电智能轿车”智己L7之后&#xff0c;其CEO刘涛曾放出豪言&#xff1a;“我们在未来的很多年后再回顾今…

【TI毫米波雷达笔记】DCA1000EVM+mmWave Studio数据采集的MIMO模式设置(多天线发射工作模式)

【TI毫米波雷达笔记】DCA1000EVMmmWave Studio数据采集的MIMO模式设置&#xff08;多天线发射工作模式&#xff09; 以IWR6843AOP为例 其为3发4收的雷达 MIMO模式有两种 TDM-MIMO和BPM-MIMO TDM-MIMO模式&#xff08;时分复用&#xff09; TDM-MIMO模式是最简单和常用的MIM…