代码编织梦想

关于Tomcat应用服务器内核架构原理
Tomcat应用服务器是我们javaEE程序员做管理系统项目经常会使用到的一款经典服务器系统软件。即便是到了springcloud/springboot一统天下的时代,它也是作为其默认内核嵌入使用的。今天我来大致总结一下Tomcat应用服务器总体架构。
Tomcat应用服务器是实现了标准JavaEE Servlet规范的Servlet引擎。它的主要架构包括2大部分。一个是连接器、另外一个是容器,也就是Servlets容器。
连接器组件:本质上是由一些线程+负责协议解析转换的工具对象组成。首先最核心的线程是一个叫Acceptor的主线程,它的工作主要是负责监听某个端口(默认是8080),获取客户端Socket连接。当有客户端远程http连接进入了,它就会从accept()函数返回一个socket对象。然后,它会以该socket对象做入参,放入一个线程池。
接下来,线程池里面的某个worker线程会获取到该socket对象, 然后调用ProtocolProcessesor对象,完成http协议解析,生成HttpRequest,HttpResponse对象。然后它继续调用Adaptor对象,完成适配处理,主要是把HttpRequest,HttpResponse对象转化为HttpServletRequest对象、HttpServletResponse对象。然后,就调用容器组件来完成业务逻辑处理。
容器组件:容器组件都是容器基类的子类,它们有一定的包含关系。最外层的容器组件叫engine。
它内部包含了一个或多个host容器。然后每个host容器里面包含了一个或多个context容器。然后
每个context容器里面包含了一个或多个wrapper容器。
每个容器里面都有一个pipeline,包含了一个或多个valve组件,它像是一个阀门,可以做一些通用性的处理逻辑。 每个容器的最后一个valve组件,会调用下层容器的pipeline。
最内层容器wrapper的pipeline的最后一个valve组件会创建一个filterChain对象,然后调用dofilter()方法。该方法内部主要是层层递进调用符合条件的过滤器,最后调用servlet完成实际业务处理。每个过滤器对象可以完成一些譬如鉴权,日志等通用性的操作。
其实filter的作用跟容器的valve组件作用很相似,都是可以实现一些系统级别的通用逻辑。区别只是valve是tomcat应用服务器自己定义的,而filter组件是javaEE标准规范里面定义的,通用性更强,其它的譬如Jboss,WebSphere,WebLogic等应用服务器也会遵守的。所以为了通用性,我们一般把鉴权,日志等共通操作写入过滤器组件就看可以了,这样切换应用服务器代码也可以继续使用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ykyyc_2017/article/details/128011478

tomcat工作原理与架构_淡蓝色_mmm的博客-爱代码爱编程

Tomcat目录结构 tomcat文件目录 bin/ tomcat执行所需要的一些脚本和jar包 conf/ tomcat的配置文件 lib/ 存放 Tomcat 服务器和所有 web 应用程序需要访问的 jar

tomcat-架构原理_猿与禅的博客-爱代码爱编程

Apache Tomcat,通常称为Tomcat服务器,是一个开源的java servlet容器由Apache软件基金会(ASF)开发。Tomcat实现了几个java EE规范包括java servlet和JavaServe

Tomcat的原理及架构详解 Tomcat8-爱代码爱编程

Tomcat的原理及架构详解 Tomcat的文件结构Tomcat的服务器结构Server详解Server中ConnectorServer中的ContainerTomcat的生命周期 Tomcat的文件结构 /bin - 启动、关闭或者其他脚本。 /conf - 配置文件(server.xml和web.xml)。 /logs - 存放日志文件。

(一)Tomcat架构及运行原理之基本架构-爱代码爱编程

目录 一、Tomcat架构 1.基本架构图 2.核心组件架构图 3.Container内部流程架构图 二、主要类组成 1.基本架构类图 2.模块功能实现类图 三、源码分析 一、Tomcat架构 研究Tomcat的架构以及流程是基于Springboot内嵌的Tomcat进行的,Springboot版本为2.1.6.RELEASE,内嵌的T

Tomcat 系统架构与原理剖析-爱代码爱编程

文章目录 Tomcat 系统架构与原理剖析浏览器访问服务器的流程Tomcat 系统总体架构Tomcat 请求处理大致过程Tomcat Servlet 容器处理流程Tomcat 系统总体架构Tomcat连接器组件CoyoteCoyote 简介Coyote 的内部组件及流程Tomcat Servlet 容器 CatalinaTomcat模块分层结构及C

一:Tomcat核心组件及应用架构详解-爱代码爱编程

目录 Web 容器是什么? HTTP 的本质 HTTP 请求响应实例 Cookie 和 Session Servlet规范 Servlet 容器 Web 应用 扩展机制 一、Tomcat各组件认知 2.Tomcat 各组件及关系 二、Tomcat server.xml 配置详解 三、Tomcat 部署脚本编写 Web 容器是什么?

tomcat的工作原理-爱代码爱编程

本文源自转载:你还记得 Tomcat 的工作原理么 一、Tomcat 整体架构 Tomcat 是一个免费的、开源的、轻量级的 Web 应用服务器。适合在并发量不是很高的中小企业项目中使用。   二、文件目录结构 以下是 Tomcat 8 主要目录结构   三、功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连

Tomcat深入学习与理解(一)Tomcat系统架构与原理分析-爱代码爱编程

Tomcat深入学习与理解(一)Tomcat系统架构与原理分析 说明:本次讲述涉及使用Tomcat版本为8.5.50 1. 简介 Tomcat服务器是一个免费的开放源码的Web应用服务器,目前是应用比较广泛的。 从Tomcat的7.0版本开始支持Servlet3.0规范规范,可以支持我们开发过程中不再配置web.xml。 2. 浏览器访问服务器的

Tomcat应用部署-爱代码爱编程

一、Tomcat介绍 概述:Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomc

Tomcat的体系架构及原理-爱代码爱编程

什么是bs模式 browser/server:浏览器、服务器 浏览器客户端发起http请求到服务器,服务器返回结果给浏览器,浏览器展示返回的内容 浏览器访问服务器的流程 http请求处理过程 浏览器访问服务器使用的http协议,http是应用层协议,定义了数据通信的格式 具体的传输由传输层控制,使用的是TCP/IP协议 Tomcat的

TOMCAT原理-爱代码爱编程

一、TOMCAT的基本架构 1、servlet基本架构 由servlet容器加载servlet类,决定调用哪个servlet也就是业务类。整体遵守的就是servlet规范。 2、Servlet容器工作流程 当请求由http服务器转发给Servlet容器后,servlet会根据url的映射关系,定位到servlet。 定位servlet加载

Tomcat的实现原理-爱代码爱编程

Tomcat 是一个Web容器。作为 Web 应用的容器承载着 Web 请求处理和响应的工作 最开始用户通过浏览器查看诸如新闻之类的静态资源,此时就需要通过 HTTP 服务器向浏览器返回静态 HTML 资源,浏览器将解析的 HTML 呈现给使用者。这里的 Web 容器就是用来存放 HTTP 服务器,能够处理网络请求并且进行响应。 随着互联网的发展,用户需求

Tomcat web应用服务器分析(非部署安装)-爱代码爱编程

1.常见web服务器 webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。Tomcat:Apache基金组织,中小型的Jav

tomcat -- 整体架构_neei的博客-爱代码爱编程

整体架构 HTTP工作原理一个请求流程Tomcat整体架构Http服务器请求处理servlet容器工作过程tomcat两个核心连接器ConnectorCoyoteCoyote与Catalina容器的交互支持的IO模型与协议连接器组件容器ContainerCatalinaContainer HTTP工作原理 ● 规定浏览器和服务器之间的数据传输

[vnctf2022]easyj4va_snowlyzz的博客-爱代码爱编程

看源码    输入 /file?url = 1报错  用伪协议可以读取到内容 /file?url=file:///etc/passwd  然后就是查看java字节码文件的目录 file?url=file:///usr/local/tomcat/webapps/ROOT/WEB-INF 这里官方给了另外一个协议netdoc,跟file用法

《ctfshow-爱代码爱编程

Web 21~30 索引web21题解原理 web22题解原理 web23题解原理 web24题解原理 web25题解原理 web26题解 web27题解 web28题