• 测试技能提升篇——了解Tomcat架构需要知道的事儿!


     

    对于测试人员来讲,使用tomcat部署web应用,设置tomcat内存大小、线程池以及运行模式是比较基础的技能,因为工作中会经常使用。但是我们是否思考过tomcat的架构以各个及核心组件的运行方式呢?本篇文章就来解决这些问题!相信通过对本文的学习,大家会对tomcat有一个整体性的认识!

    Tomcat架构概述

    在tomcat中,要理解其架构设计,可以参考下面的图,该图是从《Apahce tomcat高级配置》一书中截取的。

    server:即服务器,每个tomcat程序启动后,就是一个server。

    service:这是一种抽象的服务,它把连接器和处理引擎结合在一起。一个Service可以包含多个Connector,但是只能包含一个Engine;其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求。

    connector:用于处理连接和并发,通常包括两种方式HTTP和AJP。HTTP是用于网页地址栏http这种访问方式;AJP一般用于搭配Apache服务器Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。

    engine:处理引擎,所有的请求都是通过处理引擎处理的。Engine组件在Service组件中有且只有一个;Engine是Service组件中的请求处理组件。Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。

    host:虚拟主机,用于进行请求的映射处理。Host的作用是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。

    realm:用于配置安全管理角色,通常读取tomcat-uesrs.xml进行验证。

    context:上下文,对应于web应用。

    Tomcat请求过程

    请求过程如下图:

    首先请求发送给服务器。

    服务器使用相应的服务进行处理。

    通过不同的连接器请求后发送给处理引擎。

    处理引擎通过对虚拟主机的分析,发送给相应的虚拟主机。

    虚拟主机使用相应的应用进行相应。

    核心组件的关联

    Server在最顶层,代表整个Tomcat容器;一个Server中可以有一个或多个Service。

    Service包括Connector和Engine,Service把它们组装在一起,对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine;Connector接收请求,Engine处理请求。

    Engine、Host和Context都是容器, Engine包含Host,Host包含Context。每个Host表Engine中的一个虚拟主机;每个Context代表在特定Host上运行的一个Web应用。

    请求如何处理

    简单总结以下三点:

    根据协议和端口号选定Service和Engine;

    根据域名或IP地址选定Host;

    根据URI选定Context/Web应用;

    例如:

    http://localhost:8080/app/index.html

    首先通过协议和端口号(http和8080)选定Service;然后通过主机名(localhost)选定Host;然后通过uri(/app/index.html)选定Web应用。

    重要的配置文件

    \conf 目录下

    server.xml:

    Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。

    tomcat-users.xml:

    关于用户登录、管理员账号密码的配置都在这个文件中。

    web.xml文件

    Web应用程序描述文件,都是关于是Web应用程序的配置文件。

    context.xml

    在tomcat 5.5以后,在/conf/context.xml中进行独立的配置。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

  • 相关阅读:
    AIGC AI绘画 Midjourney 的详细使用手册
    Go:关于 Channel
    PAT 1035 Password
    新能源汽车高压上电、高压下电逻辑分析
    大数据Flink(八十六):DML:Group 聚合和Over 聚合
    网络安全的学习路线是怎么样的?
    继承需要记忆的知识点
    动态规划 -背包问题-详解
    vue3 不推荐使用index作为v-for遍历的key
    软件测试面试题之自动化测试题合集(金九银十必备)
  • 原文地址:https://blog.csdn.net/liwenxiang629/article/details/126365172