tomcat服务器体系结构

IT那个小笔记

  1. 体系结构

  2. Server

  3. Service

  4. Connector

  5. Engine

  6. Host

  7. Context

体系结构

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

tomcat服务器体系结构_web应用

   1.Server:整个Servlet容器组合,可以包含一个或多个<Service>

 

   2.service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。

 

   3.Connector:客户端与程序交互组件,负责接收请求以及向客户端返回响应。

 

   4.Engine:处理连接器接收到请求

 

   5.Host:虚拟主机

   

   6. Context一个Context对应一个Web Application

 

tomcat服务器体系结构_客户端_02

Server

Server元素在最顶层,代表整个Tomcat容器,因此它必须是server.xml中唯一一个最外层的元素。一个Server元素中可以有一个或多个Service元素。

在上图中,在最外层有一个<Server>元素,shutdown属性表示关闭Server的指令

 

Server的主要任务,就是提供一个接口让客户端能够访问到这个Service集合,同时维护它所包含的所有的Service的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service。

 

Service

Service的作用,是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine;其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求。

 

在上图中,Server中包含一个名称为“Catalina”的Service。实际上,Tomcat可以提供多个Service,不同的Service监听不同的端口,客户端访问哪个端口就到哪个Service

 

Connector

Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。Service的端口就是由它来监听

tomcat服务器体系结构_web应用_03

当客服端访问到8080端口就可以连接这个服务,下面的8009是对服务器。还有一些其他属性:连接超时的时间、要求的协议、重定向端口号

Engine

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

 

前面已经提到过,Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。

tomcat服务器体系结构_web应用_04

其中,name属性用于日志和错误信息,在整个Server中应该唯一。defaultHost属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理;因此,defaultHost的值,必须与Engine中的一个Host组件的name属性值匹配。

 

也就是说当发送请求的主机名找不到一个Host主机名与之匹配,就会换成defaultHost配置的主机名再去找,一个Engine中一定得有一个Host的主机名是Engine的属性defaultHost相匹配的

 

Host

Host的作用

 

Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。

 

Host组件代表的虚拟主机,对应了服务器中一个网络名实体(如”www.test.com”,或IP地址”),一个主机可以有多个虚拟主机来对应,通过不同的主机名访问同一台电脑服务器的不同应用

 

客户端通常使用主机名来标识它们希望连接的服务器;该主机名也会包含在HTTP请求头中。Tomcat从HTTP头中提取出主机名,寻找名称匹配的主机。如果没有匹配,请求将发送至默认主机。因此默认主机不需要是在DNS服务器中注册的网络名,因为任何与所有Host名称不匹配的请求,都会路由至默认主机。

 

Host的配置

tomcat服务器体系结构_主机名_05

 

name

  • 属性指定虚拟主机的主机名,一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配;一般情况下,主机名需要是在DNS服务器中注册的网络名,但是Engine指定的defaultHost不需要,原因在前面已经说明。

 

unpackWARs

  • 指定了是否将代表Web应用的WAR文件解压;如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。

 

Host的autoDeploy和appBase属性,与Host内Web应用的自动部署有关

Context

tomcat服务器体系结构_主机名_06

一个Context就表示一个应用

 

docBase属性:此web应用的文件路径,相对于所属Host的地址。也可以用绝对路径不放在Host指定的应用目录下

 

path:URL入口,请求找到哪一个web应用,一个path对应一个docBase,若把上面的path="/servlet"改为path="/aaaa",要访问路径是servlet的应用就得输入主机:端口/aaaa

 

reloadable:字节码变化服务器是否重新加载web应用