您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

详细讲解Tomcat系统架构

时间:2019-09-09 13:05:14  来源:  作者:

分享:详细讲解Tomcat之系统架构

 

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

分享:详细讲解Tomcat之系统架构

 

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

分享:详细讲解Tomcat之系统架构

 

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

分享:详细讲解Tomcat之系统架构

 

Servlet 规范提供了两种扩展机制:Filter和Listener。

  • Filter 是干预过程的,它是过程的一部分,是基于过程行为的。
  • Listener 是基于状态的,任何行为改变同一个状态,触发的事件是一致。

一、Tomcat系统架构

Tomcat 要实现 2 个核心功能:

  • 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。
  • 加载和管理 Servlet,以及具体处理 Request 请求。

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

分享:详细讲解Tomcat之系统架构

 

1,连接器

连接器需要完成 3 个高内聚的功能:

  • 网络通信。
  • 应用层协议解析。
  • Tomcat Request/Response 与 ServletRequest/ServletResponse 的转化。

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

分享:详细讲解Tomcat之系统架构

 

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

分享:详细讲解Tomcat之系统架构

 

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 WrApper。这 4 种容器不是平行关系,而是父子关系。

分享:详细讲解Tomcat之系统架构

 

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

分享:详细讲解Tomcat之系统架构

 

每一个容器都有一个 Pipeline 对象。

分享:详细讲解Tomcat之系统架构

 

3,一个请求在 Tomcat 中流转的过程

分享:详细讲解Tomcat之系统架构

 

4,startup.sh 启动 tomcat 的过程:

分享:详细讲解Tomcat之系统架构

 



Tags:Tomcat   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
01 事件背景6月25日, Apache 官方安全团队通过邮件公开报告了一个高危漏洞,邮件中介绍了 HTTP/2 拒绝服务漏洞的细节及解决方案。如下图所示:漏洞详情链接:http://mail-archives...【详细内容】
2020-07-09   Tomcat  点击:(0)  评论:(0)  加入收藏
Promethues 监控tomcat 主要用的模块 Promethus 负载抓取/存储指标信息、并提供查询功能 grafana 数据可视化 JMX exporter 提供JMX中JVM相关的metrics1、利用JMX exporter,...【详细内容】
2020-07-05   Tomcat  点击:(0)  评论:(0)  加入收藏
首先我们通过一张简化的类图来回顾一下,从图上你可以看到各种组件的层次关系,图中的虚线表示一个请求在 Tomcat 中流转的过程。 上面这张图描述了组件之间的静态关系,如果想让...【详细内容】
2020-06-12   Tomcat  点击:(2)  评论:(0)  加入收藏
上一次分享了中间件-部署tomcat文章,那么实际一些最基础的tomcat知识有没有去了解呢?这里简单介绍下一些知识点,希望大家喜欢。 知识点1:tomcat的日志文件解压tomcat之后,会有个l...【详细内容】
2020-06-09   Tomcat  点击:(8)  评论:(0)  加入收藏
前言上一次分享了中间件-部署tomcat文章,那么实际一些最基础的tomcat知识有没有去了解呢?这里简单介绍下一些知识点,希望大家喜欢。 知识点1:tomcat的日志文件解压tomcat之后,会...【详细内容】
2020-06-09   Tomcat  点击:(2)  评论:(0)  加入收藏
1 检查是否禁止Tomcat列表显示文件将web.xml文件中listings配置false2 检查是否禁止超级用户启用tomcat使用普通用户启动tomcat3检查是否配置Tomcat错误页面重定向1. web.xm...【详细内容】
2020-06-09   Tomcat  点击:(20)  评论:(0)  加入收藏
一、安装tomcat点击链接进入官网下载 https://tomcat.apache.org/进去点击左边Download选择版本(建议选择8或9版本),点击右边箭头下载64位版本 下载完解压二、配置环境变量右...【详细内容】
2020-06-05   Tomcat  点击:(5)  评论:(0)  加入收藏
作为免费开源的轻量级Web应用服务器,Tomcat在中小型系统或并发访问用户不是很多的情况下被广泛使用,是开发和调试JSP程序的不错之选,Tomcat也因性能稳定且免费,深受Java爱好者的...【详细内容】
2020-06-04   Tomcat  点击:(0)  评论:(0)  加入收藏
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。相信大家对于 Tomcat 已经是非常熟悉了,本...【详细内容】
2020-05-25   Tomcat  点击:(0)  评论:(0)  加入收藏
前言Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。相信大家对于 Tomcat 已经是非常熟悉...【详细内容】
2020-05-25   Tomcat  点击:(1)  评论:(0)  加入收藏
Tomcat是一个开源的轻量级Web应用服务器,在我们平常工作过程中接触得非常多。代码也非常经典,很多人为了提升自己的技术也会去阅读学习Tomcat的源码。但正如著名诗人李白所说...【详细内容】
2020-05-12   Tomcat  点击:(6)  评论:(0)  加入收藏
步骤1:下载tomcat从官网https://tomcat.apache.org下载tomcat,这里下载apache-tomcat-8.0.20.tar.gz 步骤2:将tomcat上传到虚拟机 我这里上传到/usr/local/demo步骤3:将tar包...【详细内容】
2020-05-01   Tomcat  点击:(8)  评论:(0)  加入收藏
漏洞原理Tomcat的Servlet是在conf/web.xml配置的,通过配置文件可知,当后缀名为.jsp和.jspx的时候是通过JspServlet处理请求的,而其他的精通文件是通过DefaultServlet处理的可...【详细内容】
2020-04-30   Tomcat  点击:(3)  评论:(0)  加入收藏
Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务IISIIS是微软公司的Web服务器。主要支持ASP语言环...【详细内容】
2020-04-18   Tomcat  点击:(9)  评论:(0)  加入收藏
通过以下网址打开tomcat管理页面,默认端口为8080(如果不能打开则关闭服务器防火墙或者开放8080端口)...【详细内容】
2020-04-08   Tomcat  点击:(1)  评论:(0)  加入收藏
一、HTTP2.01.1 简介HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),简称为h2(基于TLS/1.2或以上版本的加密连接)或 h2c(非加密连接),是HTTP协议的的第二个主要版本。1.2 新的特性...【详细内容】
2020-03-31   Tomcat  点击:(5)  评论:(0)  加入收藏
一、Tomcat顶层架构先上一张Tomcat的顶层结构图(图A),如下: Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服...【详细内容】
2020-03-17   Tomcat  点击:(8)  评论:(0)  加入收藏
tomcat中的证书配置参数如下:<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="t...【详细内容】
2020-03-17   Tomcat  点击:(12)  评论:(0)  加入收藏
目录的简单介绍 bin:启动和关闭tomcat的bat文件 conf:配置文件 server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host) web.xml文件配置与web应用(we...【详细内容】
2020-03-11   Tomcat  点击:(8)  评论:(0)  加入收藏
前段时间和@lufei 大哥学习了一波Linux下基于文件描述符的反序列化回显方式的思路。在自己实现的过程中发现,是通过IP和端口号的筛选,从而过滤出当前线程(也可以说是请求)的文件...【详细内容】
2020-03-11   Tomcat  点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条