作者:编程迷思来源:http://www.cnblogs.com/kismetv/p/7228274.html前言
Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛 。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制 。因此,学习server.xml文件的配置,对于了解和使用Tomcat至关重要 。
本文将通过实例,介绍server.xml中各个组件的配置,并详细说明Tomcat各个核心组件的作用以及各个组件之间的相互关系 。
说明:由于server.xml文件中元素与Tomcat中组件的对应关系,后文中为了描述方便,“元素”和“组件”的使用不严格区分 。
如果觉得文章对你有帮助,欢迎点赞或转载 。文章有疏漏之处,欢迎批评指正 。
一、一个server.xml配置实例server.xml位于$TOMCAT_HOME/conf目录下;下面是一个server.xml实例 。后文中将结合该实例讲解server.xml中,各个元素的含义和作用;在阅读后续章节过程中,可以对照该xml文档便于理解 。
文章插图
二、server.xml文档的元素分类和整体结构
1、整体结构
server.xml的整体结构如下:
文章插图
该结构中只给出了Tomcat的核心组件,除了核心组件外,Tomcat还有一些其他组件,下面介绍一下组件的分类 。
2、元素分类
server.xml文件中的元素可以分为以下4类:
(1)顶层元素:<Server>和<Service>
<Server>元素是整个配置文件的根元素,<Service>元素则代表一个Engine元素以及一组与之相连的Connector元素 。
(2)连接器:<Connector>
<Connector>代表了外部客户端发送请求到特定Service的接口;同时也是外部客户端从特定Service接收响应的接口 。
(3)容器:<Engine><Host><Context>
容器的功能是处理Connector接收进来的请求,并产生相应的响应 。Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context 。一个Engine组件可以处理Service中的所有请求,一个Host组件可以处理发向一个特定虚拟主机的所有请求,一个Context组件可以处理一个特定Web应用的所有请求 。
(4)内嵌组件:可以内嵌到容器中的组件 。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件 。
下面将详细介绍Tomcat中各个核心组件的作用,以及相互之间的关系 。
三、核心组件本部分将分别介绍各个核心组件的作用、特点以及配置方式等 。
1、Server
Server元素在最顶层,代表整个Tomcat容器,因此它必须是server.xml中唯一一个最外层的元素 。一个Server元素中可以有一个或多个Service元素 。
在第一部分的例子中,在最外层有一个<Server>元素,shutdown属性表示关闭Server的指令;port属性表示Server接收shutdown指令的端口号,设为-1可以禁掉该端口 。
Server的主要任务,就是提供一个接口让客户端能够访问到这个Service集合,同时维护它所包含的所有的Service的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service 。
2、Service
Service的作用,是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务 。一个Service可以包含多个Connector,但是只能包含一个Engine;其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求 。
在第一部分的例子中,Server中包含一个名称为“Catalina”的Service 。实际上,Tomcat可以提供多个Service,不同的Service监听不同的端口,后文会有介绍 。
3、Connector
Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine 。
通过配置Connector,可以控制请求Service的协议及端口号 。在第一部分的例子中,Service包含两个Connector:
文章插图
(1)通过配置第1个Connector,客户端可以通过8080端口号使用http协议访问Tomcat 。其中,protocol属性规定了请求的协议,port规定了请求的端口号,redirectPort表示当强制要求https而请求是http时,重定向至端口号为8443的Connector,connectionTimeout表示连接的超时时间 。
推荐阅读
- 以MySQL为例,详解数据库索引原理及深度优化
- 详解 Linux 中的虚拟文件系统
- 常见交通标志详解
- 一文搞懂Nginx限流,原来这么简单
- 详解sqlplus设定行大小、页大小、字符列格式、数字列格式、清屏
- 2019年Facebook广告创建教程详解
- Linux Netcat 命令—超级网络工具详解
- 民事诉讼?流程及执行宝典 一文看懂,打官司全流程!
- 带你全面了解抖音星图平台!
- 一张图带你看透抖音养号技巧 制定一套流水化的运营流程