Tomcat server.xml属性详解

本文持续更新中,有时间或者在学习中遇到了相关配置的元素,会增加内容,求收藏和关注

7月13日更新Context
7月14日更新Context、Host

Top Level Elements

Server

简介

属性

通用属性
标准实现

Service

简介

属性

通用属性
标准实现

Connetors

HTTP/1.1 Connector

简介

  HTTP Connector元素代表一个支持HTTP/1.1协议的连接器组件。它使Catalina除了可以执行Servlet和JSP页面外,还能够作为独立的web服务器运行。该组件的特定实例在服务器的指定端口号上监听TCP连接请求。一个或更多的此类的连器组件可以作为单个服务组件的一部分被配置。它们各自将请求转发给相关联的引擎(Engine)以便执行请求处理过程或程序和创建响应。

  每个到来的non-asynchronous请求(个人理解:non-asynchronous,非异步的含义是该请求在后台不需要再转发,进而异步处理该请求)在请求期间需要一个线程。如果接收到的并发请求多于当前可用的请求处理线程可以处理的数量,则将创建额外的线程,直至达到配置的最大值(maxThreads 属性的值)。 如果接收到更多并发请求,Tomcat 将接受新连接,直到当前连接数达到 maxConnections。 连接在连接器创建的服务器套接字内排队,直到有线程可以处理连接。 达到 maxConnections 后,操作系统将对进一步的连接进行排队。 操作系统提供的连接队列的大小可以由acceptCount 属性控制。 如果操作系统队列已满,进一步的连接请求可能会被拒绝或可能超时。

Containers

Engine

简介

  Engine 元素表示与特定 Catalina Service关联的整个的请求处理机器/引擎。 它接收并处理来自一个或多个连接器的所有请求,并将完成的响应返回给连接器,以便最终传输回客户端。

  一个 Engine 元素必须嵌套在 Service 元素中,紧跟在与该 Service 关联的所有相应的 Connector 元素之后。

Host

简介

  Host 元素代表一个虚拟主机,它是服务器的网络名称/域名(例如“www.mycompany.com”)与正在运行 Tomcat 的特定服务器的关联。*为了使客户端能够使用其网络名称连接到 Tomcat 服务器,该名称必须在管理您所属 Internet 域的域名服务 (DNS) 服务器中注册。*

------------------------------------------------关于Host的个人理解----------------------------------------------

  上文关于Host的官方文档的说明有些抽象,不容易理。它到底有什么作用呢?

  举例说明:我们在浏览器地址栏中输入https://www.csdn.net:443后,首先,会解析www.csdn.net对应的IP地址,之后与该IP地址对应主机的443端口绑定的进程进行通信。如果我们下面这样在server.xml中配置了虚拟主机,其中localhost和www.gzn.com(windows系统,C:\windows\System32\divers\etc\hosts文件中配置)的IP地址都是127.0..0.1

 <Engine name="Catalina" defaultHost="localhost">
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"> </Host>
            
      <Host name="www.company.com" appBase="webapps" 
      unpackWARs="true" autoDeploy="true">
 </Engine>

那么,我们在浏览器地址栏中输入localhost:8080和www.company.com:8080后,IP地址都解析为127.0.0.1,之后与该IP地址对应的主机的8080端口绑定的Tomcat进程进行通信。我们知道HTTP协议的请求报文的请求头包含Host字段,Tomcat会查看该请求的Host字段,然后分配到对应的虚拟主机去处理该请求。这就是我们常说的一个IP绑定多个域名的原理,就是靠虚拟主机实现的。但是给人的感谢好像是访问了不同的主机,这样不仅节省了IP资源,还可以让一台服务器提供多种服务。另外,Tomcat如果查看Host字段没要找到匹配的虚拟主机,就会把请求给defaultHost(Engine属性)虚拟主机处理,例如你在地址栏输入127.0.0.1,Tomcat发现并不存在127.0.0.1主机,就给了localhost处理,所以127.0.0.1也可以访问到默认应用。

-------------------------------------------------------结尾----------------------------------------------------------

  一个或多个 Host 元素嵌套在 Engine 元素中。在 Host 元素内,您可以为与此虚拟主机关联的 Web 应用程序嵌套 Context 元素。与每个引擎关联的主机之一必须具有与该引擎的 defaultHost 属性匹配的名称。

  客户端通常使用主机名来标识他们希望连接到的服务器。此主机名也包含在 HTTP 请求标头中。 Tomcat 从 HTTP 标头中提取主机名并查找具有匹配名称的主机。如果未找到匹配项,则将请求路由到默认主机。默认主机的名称不必与 DNS 名称匹配(尽管可以),因为 DNS 名称与 Host 元素名称不匹配的任何请求都将路由到默认主机。

属性

通用属性

Host的所有实现都支持下列属性:

属性描述
appBase虚拟主机上应用的根目录。这个目录路径名可以包含(容纳)将被部署在虚拟主机上的web应用,你可以指定一个绝对路径,也可以指定一个相对于“CATALINA_BASE”的路径。如果没有指定,webapps将作为默认的应用根目录被使用。
xmlBase虚拟主机的XML根目录,这是一个目录的路径名,可能包含要部署在此虚拟主机上的Context XML描述符
autoDeploy这个标志值表明Tomcal服务器在运行时是否定期检查新增或者更新的web应用。如果设置为true,Tomcat服务器会定期检查并且部署 appBasexmlBase 目录并部署任何发现的新web应用或者上下文环境XML描述符
name虚拟主机的名字,通常是域名服务器中注册的网络名称。在windows系统中,域名解析时,会先去解析本地文件“C:\Windows\System32\drivers\etc”,因此,你可以在该文件中为本地环回测试地址(127.0.0.1~127.255.255.254)注册自己的域名。
标准实现

Host的标准实现是org.apache.catalina.core.StandardHost.,它支持下列额外的属性(除了上面列举的通用属性之外的属性):

属性描述
copyXML此虚拟主机的 XML根目录。 这是一个目录的路径名,该目录可能包含要部署在此虚拟主机上的上下文 XML 描述符。 您可以为此目录指定绝对路径名,或相对于 $CATALINA_BASE 目录的路径名。 有关自动识别和部署 Web 应用程序的更多信息,请参阅自动应用程序部署。 如果未指定,将使用默认的 conf/<engine_name>/<host_name>。
unpackWARs如果你希望作为web应用程序归档(即后缀为war)的被放置在appBase目录中的web应用程序解压到相应的磁盘目录结构中,则设置为true。如果你希望直接从WAR文件运行此类web应用程序,则设置为false。

注意:如果 Tomcat 扩展 WAR 文件,那么它会在解压后的目录结构中添加一个文件 (/META-INF/war-tracking),当 Tomcat 未运行时,它会使用该文件检测 WAR 文件中的更改。 任何此类更改都将在 Tomcat 下次启动时触发删除扩展目录和部署更新的 WAR 文件。

注意:将此选项设置为 false 时运行会导致性能下降。 为避免明显的性能损失,应配置 Web 应用程序,以便不需要对 Servlet 3.0+ 可插入性功能进行类扫描

(简而言之,设置为true,服务器启动后,WAR文件会被自动解压;设置为false,会导致性能下降,因此推荐设置为true)

Context

简介

Context 元素代表在特定虚拟主机中运行的单个 Web 应用程序。每个 Web 应用程序都基于一个 Web 应用程序存档 (WAR) 文件,或包含相应解压缩内容的相应目录

用于处理每个HTTP请求的web应用,由Catalina基于请求URI的最长匹配原则来选择,一旦应用被选择后,Context会根据由web应用部署(即web.xml)定义的Servlet映射选择合适的Servlet来处理传入的请求

定义上下文

不建议在server.xml文件中直接定义<Context>元素这是因为如果不重启Tomcat,就无法重新加载主conf/server.xml文件,这使得修改Context配置更具侵入性。 Default Context 元素(见下文)还将overwrite(覆盖)直接放置在 server.xml 中的任何 元素的配置。为防止出现这种情况,server.xml 中定义的 元素的 override 属性应设置为 true。

可以明确定义单个 Context 元素:

属性

通用属性

Context所有实现都支持下列属性:

属性描述
path指定访问该web应用的URL入口,形如 /webapp-name
docBase指定Web应用路径,可以是绝对路径,或者是相对于Host元素appBase属性的相对路径。Web应用可能有两种形式:开放的目录结构(即未打包的原始的应用目录),则路径形如 C:\webapps\helloworld;WAR文件,则路径形如C:\webapps\helloworld.war
className实现Context组件的类,默认值使用Tomcat的标准实现:org.apache.catalina.core.StandardContext
reloadable如果这个属性设置为true,Tomcat服务器在运行时会监视WEB-INF/classes和WEB-INF/lib目录下.class类文件或者.jar类库档案的改动。如果检测到有更新,服务器会自动重新加载Web应用,默认值为false。使用建议:在web开发和调试阶段,设置为true,方便Web应用的调试。在发布阶段,设置为false,减低Tocmcat监视的运行负荷,提高Tomcat运行的性能
标准实现
属性描述
copyXML如果您希望在部署应用程序时将嵌入应用程序(位于 /META-INF/context.xml)的上下文 XML 描述符复制到 xmlBase,则设置为 true。 在后续启动时,复制的上下文 XML 描述符将优先于嵌入在应用程序中的任何上下文 XML 描述符,即使嵌入在应用程序中的描述符是更新的。 该标志的值默认为 false。 请注意,如果 deployXMLfalse,则此属性将无效。
特别功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月几时有666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值