iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Tomcat系统架构是怎样的
  • 100
分享到

Tomcat系统架构是怎样的

2023-06-27 15:06:48 100人浏览 安东尼
摘要

这篇文章主要介绍“Tomcat系统架构是怎样的”,在日常操作中,相信很多人在Tomcat系统架构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Tomcat系统架构是怎样的”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“Tomcat系统架构是怎样的”,在日常操作中,相信很多人在Tomcat系统架构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Tomcat系统架构是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Tomcat系统架构是怎样的

Tomcat的组织结构

Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层容器中。

Tomcat的各种组件都是在Tomcat安装目录下的/conf/server.xml文件中配置的。

由Server.xml的结构看Tomcat的体系结构

Tomcat系统架构是怎样的

由上可得出Tomcat的体系结构:

Tomcat系统架构是怎样的

由上图可看出Tomca的心脏是两个组件:Connecter和Container。一个Container可以选择多个Connecter,多个Connector和一个Container就形成了一个Service。Service可以对外提供服务,而Server服务器控制整个Tomcat的生命周期。

组件的生命线“Lifecycle”

Service 和 Server 管理它下面组件的生命周期。

Tomcat 中组件的生命周期是通过 Lifecycle 接口来控制的,组件只要继承这个接口并实现其中的方法就可以统一被拥有它的组件控制了,这样一层一层的直到一个最高级的组件就可以控制 Tomcat 中所有组件的生命周期,这个最高的组件就是 Server,而控制 Server 的是 Startup,也就是您启动和关闭 Tomcat。

Tomca的两大组件:Connecter和Container

Connecter组件

一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。

Tomcat中有两个经典的Connector,一个直接侦听来自Browser的Http请求,另外一个来自其他的WEBServer请求。Cotote HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,Coyote JK2 Connector在端口8009处侦听其他Web Server的Servlet/jsP请求。

Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。

Container组件

Container的体系结构如下:

Tomcat系统架构是怎样的

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。

Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

Engine 容器

Engine 容器比较简单,它只定义了一些基本的关联关系

Host 容器

Host 是 Engine 的字容器,一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。

Context 容器

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个 Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request 来分配的。

Wrapper 容器

Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。

Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了拥有一个 Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper 将直接和 Servlet 的各种信息打交道。

Tomcat 中其它组件

Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

Tomcat Server处理一个HTTP请求的过程:Tomcat系统架构是怎样的

用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。

Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。

Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。

path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。

构造httpservletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。

Context把执行完之后的HttpServletResponse对象返回给Host。

Host把HttpServletResponse对象返回给Engine。

Engine把HttpServletResponse对象返回Connector。

Connector把HttpServletResponse对象返回给客户Browser。

到此,关于“Tomcat系统架构是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Tomcat系统架构是怎样的

本文链接: https://www.lsjlt.com/news/311419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Tomcat系统架构是怎样的
    这篇文章主要介绍“Tomcat系统架构是怎样的”,在日常操作中,相信很多人在Tomcat系统架构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Tomcat系统架构是怎样的”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-27
  • Prometheus系统的架构是怎样的
    Prometheus系统的架构主要包括以下几个组件: Prometheus Server:Prometheus服务器是整个架构的...
    99+
    2024-03-04
    Prometheus
  • Linux系统架构是怎么样的
    这篇文章主要介绍了Linux系统架构是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我以下图为基础,说明Linux的架构(architecture)。最内层是硬件,最...
    99+
    2023-06-13
  • Linux系统目录架构是怎样的
    本文小编为大家详细介绍“Linux系统目录架构是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux系统目录架构是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。文件系统为一个倒转的单根树状结构根...
    99+
    2023-06-06
  • MySQL架构体系是怎样的
    本篇内容主要讲解“MySQL架构体系是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL架构体系是怎样的”吧!一 : 数据库和数据库实例 在MySQL的学习研究中,存在两个...
    99+
    2023-06-05
  • Java架构体系是怎样的
    这篇文章主要讲解了“Java架构体系是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java架构体系是怎样的”吧!一 。性能优化深入内核,直击故障,拒绝蒙圈二。应用框架 源码解读站在巨...
    99+
    2023-06-02
  • Kafka的体系架构是怎样的
    这期内容当中小编将会给大家带来有关Kafka的体系架构是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是Kafka?数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统...
    99+
    2023-06-02
  • 让面试官颤抖的Tomcat系统架构系列!
    前言俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以游刃而解,了解了...
    99+
    2023-06-02
  • Android架构是怎样的
    本篇内容介绍了“Android架构是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Android 图解Android 操作系统是一个软...
    99+
    2023-06-27
  • SDN架构是怎样的
    这篇文章主要介绍了SDN架构是怎样的的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SDN架构是怎样的文章都会有所收获,下面我们一起来看看吧。SDN是一种将网络控制功能与转发功能分离、实现控制可编程的新兴网络架构...
    99+
    2023-06-27
  • Zabbix的架构是怎样的
    Zabbix的架构是客户端-服务器架构,包括以下组件: Zabbix Server:负责接收来自监控对象的数据、存储监控数据、执...
    99+
    2024-04-02
  • Kylin的架构是怎样的
    Kylin是一个开源的分布式OLAP(联机分析处理)引擎,主要用于大规模数据集的多维数据分析和查询。它的架构主要包含以下几个组件: ...
    99+
    2024-04-02
  • Teradata的架构是怎样的
    Teradata的架构是一个多层次的结构,包括以下几个主要组件: Parsing Engine (PE):负责接收和解析SQL查询...
    99+
    2024-03-11
    Teradata
  • Atlas的架构是怎样的
    Atlas的架构是一个分布式系统,主要由以下几个组件构成: 数据存储层:Atlas使用Apache HBase作为数据存储层,用...
    99+
    2024-04-02
  • kubernetes架构是怎么样的
    小编给大家分享一下kubernetes架构是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:整体架构二:架构模块说明以上是“kubernetes架构是怎...
    99+
    2023-06-04
  • linux系统目录结构是怎样的
    小编给大家分享一下linux系统目录结构是怎样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当在使用Linux的时候,如果您通过ls &nda...
    99+
    2023-06-13
  • Spring核心框架体系结构是怎样的
    Spring核心框架体系结构是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。很多人都在用spring开发java项目,...
    99+
    2024-04-02
  • Docker整体架构是怎样的
    这篇文章主要讲解了“Docker整体架构是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker整体架构是怎样的”吧!用户是使用DockerClient与Docker Daemon...
    99+
    2023-06-04
  • CentOS系统安装Tomcat切换JDK的方法是怎样的
    CentOS系统安装Tomcat切换JDK的方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。不知道大家也曾经有我这个问题,CentOS系统安装以后,C...
    99+
    2023-06-16
  • Linux系统目录结构是怎样的呢
    今天就跟大家聊聊有关Linux系统目录结构是怎样的呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。登录系统后,在当前命令窗口下输入命令: ls /你会看到如下图所...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作