美文网首页
测试技能提升篇——了解Tomcat架构需要知道的事儿!

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

作者: 测试开发Kevin | 来源:发表于2022-08-16 14:14 被阅读0次

对于测试人员来讲,使用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服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

相关文章

网友评论

      本文标题:测试技能提升篇——了解Tomcat架构需要知道的事儿!

      本文链接:https://www.haomeiwen.com/subject/rbnrgrtx.html