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:虚拟主机中的项目

结束!

相关推荐
面汤放盐7 分钟前
互联网“黑话”生存实用指南(100)
java·后端
@小匠42 分钟前
iText与OpenPDF使用差异及中文处理完全指南
java·pdf
小鹭同学_44 分钟前
JavaWeb05
java
Gu Gu Study1 小时前
Spring运行程序RabbitMQ并没有自动创建队列的问题解决
java·spring cloud·rabbitmq
vortex51 小时前
Tomcat 日志文件名的命名规范
java·tomcat
little_xianzhong1 小时前
Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
java·开发语言
刘 大 望1 小时前
传输层:UDP/TCP协议
java·网络·网络协议·tcp/ip·udp·信息与通信
小胖墩有点瘦1 小时前
【基于协同过滤的校园二手交易平台】
java·vue·毕业设计·springboot·计算机毕业设计·协同过滤·校园二手交易平台
我真的是大笨蛋1 小时前
G1 垃圾收集器深入解析
java·jvm·笔记·缓存
ytadpole2 小时前
揭秘 XXL-JOB 调度:从代码深处看路由策略的精妙设计
java·后端