资讯专栏INFORMATION COLUMN

Tomcat 7 server.xml 配置文件详解

crossoverJie / 707人阅读

摘要:每个可以创建一个线程池,但是可以在以及其他组件之间共享,只要那些组件配置之后支持。线程池最大活跃线程数量,默认。如果配置了组件防止泄露的监听器,它会通知停止环境。如果未指定此属性,会使用一个私有的内部来提供线程池。

概览

Tomcat7作为Servlet/JSP容器,它的全部行为的配置指令,包含在/conf/server.xml文件中,这个文件是一个无预定义结构的XML文件,所有的属性大小写敏感。

所有的系统属性变量都配置在catalina.properties文件中。
所有的配置元素分为以下主要几类:

Server是整个配置文件的根元素。

Service代表了一组Connectors,这些Connectors关联到同一个引擎Engine。

Connectors代表了外部客户端请求(并接收响应)到一个特定的Service的接口。

Containers代表了处理请求和并产生响应的组件。

Engine引擎为Service处理所有请求;而Host为特定的虚拟主机处理所有请求;Context为特定的web应用处理所有请求。

Nested Components,内置组件,代表可以内置到Container的元素。一些元素可以内置到任何Container中,而一些只能内置到Context中。

Server

Server代表整个Catalina servlet容器,所以在server.xml文件中,只能有一个Server元素。

属性说明

className:这个类必须是org.apache.catalina.Server的实现类,如果没有指定类名,则使用标准实现。
address:这是等待关闭命令的TCP/IP地址,如果没有指定,默认使用localhost
port:这个端口是用于接收关闭服务的端口,可以设置为-1来禁用。
shutdown:这个命令字符串必须通过TCP/IP端口接收,才能关闭Tomcat。

内置的组件

Service - 一个或多个Service元素。

GlobalNamingResources - 配置Server的JNDI全局资源。

Service

Service元素是一个或多个Connector组件的结合体,这些Connector共享一个多带带的用于处理请求的Engine组件。一个或多个Service可能内置在一个Server元素中。

属性说明

className:这个类必须是org.apache.catalina.Service的实现类。

name:Service的展示名称,如果使用标准的Catalina组件,这个名称会包含在日志信息中。同一个Server下的每个Service的名称必须唯一。

Executor 线程池

Executor代表一个可以在Tomcat各组件中共享的线程池。每个Connector可以创建一个线程池,但是可以在Connector以及其他组件之间共享,只要那些组件配置之后支持Executor。
Executor必须实现org.apache.catalina.Executor类。
Executor是Service的内置元素。为了供Connector挑选,在server.xml文件中,Executor元素需要出现在Connector前面。

属性说明

className:必须是org.apache.catalina.Executor的实现类,默认值为org.apache.catalina.core.StandardThreadExecutor。

name:名称,要求唯一。

threadPriority:Executor线程优先级,默认为常量Thread.NORM_PRIORITY(5)。

daemon:线程是否应该为守护线程,默认为true。

namePrefix:Executor创建的线程名称的前缀,每个线程名称为namePrefix+线程编号。

maxThreads:线程池最大活跃线程数量,默认200。

minSpareThreads:一直保持存活的最低线程数量,默认25。

maxIdleTime:线程超时时间,单位毫秒。线程闲置时间超过这个数值会被关闭,除非活跃线程数量低于或等于minSpareThreads。默认值为60000ms(即1分钟)。

maxQueueSize:等待执行的任务队列的最大值,默认为整型最大值Integer.MAX_VALUE。

prestartminSpareThreads:是否预启动空闲线程(minSpareThreads)。在Executor启动时,是否启动minSpareThreads。默认为false。

threadRenewalDelay:如果配置了组件ThreadLocalLeakPreventionListener(防止ThreadLocal泄露的监听器),它会通知Executor停止Context环境。如果Context停了,池里的线程会重新创建。为了避免所有的线程同时重新创建,这个选项设置了任意两个线程创建之间的延迟时间。单位毫秒ms,默认1000ms。如果为负值,线程不会被重新创建。

Connectors Http Connector

Http Connector是支持HTTP/1.1协议的Connector组件。它使Catalina变成一个单机Web服务器,并且使他可以执行Servlet和JSP。这个组件的一个特殊实例监听着服务器的一个特定的TCP端口。
每个传入的请求都会申请一个线程。如果多个请求同时进入,并且超过了当前可用线程数量,就会创建更多的线程,直到达到配置的最大线程数量。如果还有更多的同时请求,这些请求会被堆积在Connector创建的server socket中,直到最大值(acceptCount属性)。任何更多的请求会收到"connection refused"错误,直到有可用的资源。

公共属性

allowTrace:是否允许TRACE HTTP方法,默认false。

asyncTimeout:异步请求超时时间,单位毫秒,默认10000ms(10秒)。

enableLookups:如果想使用request.getRemoteHost()方法通过DNS查找远程请求客户端的真实的主机名,则设置为true。设置为false会跳过DNS查找,直接返回IP地址。DNS查找默认禁用。

maxHeaderCount:一个请求允许最大的请求头数量。如果超出限制请求会被拒绝。如果为负值,无限制。默认值100。

maxParameterCount:GET和POST请求的参数(和值)的最大数量,超出的参数会被忽略。如果是0或者小于0,表示无限制。默认为10000。

maxPostSize:POST请求的最大字节数。如果为负,无限制。默认2097152字节(即2Mb)。

maxSavePostSize:POST请求的最大保存/缓冲字节数。-1表示无限制,0表示禁用保存/缓冲,默认为4096字节(4Kb)。

port:TCP端口,用于创建Server socket并等待进入连接。操作系统允许1个服务器监听1个IP的1个指定端口。如果值为0,Tomcat会为这个Connector选择一个随机的空闲端口。

protocol:通信协议。默认为HTTP/1.1,这个协议使用自动切换机制来选择阻塞式基于Java的Connector或者基于APR/native的Connector。如果要使用明确的协议,而不是自动切换机制选择的协议,可以选择下面的值:

org.apache.coyote.http11.Http11Protocol - 阻塞 Java connector

org.apache.coyote.http11.Http11NioProtocol - 非阻塞 Java connector

org.apache.coyote.http11.Http11AprProtocol - APR/native connector.
也支持自定义的实现。

proxyName:如果当前Connector使用代理配置,使用这个属性指定Server名称。这个Server名称,可以调用request.getServerName()方法返回。

proxyPort:指定代理的Server端口。

redirectPort:如果当前Connector不支持SSL请求,但是收到的请求匹配web.xml中配置的security-constraint选项,要求使用SSL端口,那么Catalina会自动把请求转发到这个指定端口。

scheme:给当前协议设置一个名字,这样可以通过request.getScheme()方法获得协议名词,比如给SSL协议取名HTTPS。默认值为http。
URIEncoding:字符编码。用于URI字节解码,和URL %xx部分数据的解码。默认为ISO-8859-1。

useIPVHosts:将该属性设置为true会导致Tomcat使用收到请求的IP地址,来决定将请求发送到哪个主机。默认false。

标准实现属性

除了上面列出的常见的连接器属性,标准的HTTP连接器(BIO,NIO和APR/native)都支持以下属性。

acceptCount:当所有的可用线程都在使用中,传入连接请求队列的最大长度。当队列满时,任何请求都会被拒绝。默认100。

address:如果服务器有多个IP,这个属性指定使用哪个IP地址用于监听端口。默认使用与服务器关联的全部IP地址。

compressableMimeType:HTTP压缩的元数据类型,参数可以使用逗号间隔。默认为text/html,text/xml,text/plain,text/css,text/javascript,application/javascript。

compression:为了节省服务器带宽,Connector可以使用HTTP/1.1 GZIP压缩。

on:允许压缩,这回引起文本数据被压缩。

off:禁用压缩。

force:强制在所有情况下压缩。

某整数:压缩前的最小字节量,否则不压缩。
默认为false。

compressionMinSize:当compression设置为on,指定压缩前的最小数据量。默认为2048。

connectionTimeout:连接超时时间。-1表示无限制。默认值60000ms(60秒)。但server.xml默认配置为20000。

disableUploadTimeout:是否禁用上传超时时间,开启后,上传数据的连接使用多带带的超时时间。

connectionUploadTimeout:上传数据时,连接超时时间。

executor:指向Executor元素的引用。如果设置了这个元属性,并且对应的Executor存在,Connector将使用这个Executor,而其他所有线程相关属性将被忽略。如果未指定此属性,Connector会使用一个私有的、内部Executor来提供线程池。

executorTerminationTimeoutMillis:在关闭Connector之前,那个私有的、内部Executor等待请求处理线程的终结的超时时间。BIO Connector默认值为0ms。NIO和APR/native Connector默认值为5000ms。

keepAliveTimeout:长连接超时时间。Connector在关闭连接之前,会等待另一个HTTP请求的时间。默认值是connectionTimeout的属性值。-1无超时时间。

maxKeepAliveRequests:HTTP请求最大长连接数量。如果值为1,禁用长连接。设为-1,无限制。默认值为100。

maxConnections:在任何给定的时间服务器接收并处理的最大连接数。当这个数字已经达到了,服务器将不会接受任何连接,直到连接的数量降到低于此值。基于acceptCount,操作系统可能仍然接收连接。

maxHttpHeaderSize:请求头和响应头的最大字节数。默认8192(8Kb)

maxThreads:最多同时处理的请求的最大线程数量,这决定了同时处理请求的最大数量。默认200。

minSpareThreads:最小空闲线程数量。默认10。

socketBuffer:Socket输出缓冲区大小。单位字节。-1表示禁用缓冲区。默认值9000字节。

SSLEnabled:是否开启SSL加密传输。需要配置secure和scheme属性。

特殊功能

代理支持:如果Tomcat运行在一个代理服务器后面时,可以使用proxyName和proxyPort属性。

SSL支持:通过设置SSLEnabled为true来开启SSL支持。同时要设置scheme为https,设置secure为true,来传递正确的信息到servlet。

Containers Context

Context元素代表一个Web应用,此Web应用运行在一个特定的虚拟主机中。每个Web应用都基于WAR文件或者对应的解压缩文件目录。
你可以定义多个Context元素,每个Context必须在虚拟主机内有一个唯一的名称,但Context路径不需要是唯一的。一个Context名称必须用0长度的字符串,作为虚拟主机默认的Web应用,用于处理其他与Context路径不匹配的请求。

属性

cookies:是否使用cookie,可以通过cookie鉴别session。默认true。设置为false,则无法使用cookie完成session鉴证,然后必须依赖于URL重写。

docBase:应用程序文件的根目录。如果应用程序不在Host元素的appBase路径下,需要设置此属性。

path:应用程序的访问路径(context path)。

reloadable:自动重新加载class和jar文件。设置为true,Catalina会监视/WEB-INF/classes/ 和/WEB-INF/lib目录下的变动,如果检测到变动就会自动重新加载应用程序。此功能非常有用但是不建议在生产环境使用。

特殊功能

Access Log:访问日志。可以要求Catalina为Engine、Host或Context处理的请求创建访问日志,通过在这些元素中添加Valve元素,如下面这段配置:


  ...
  
  ...

PS:是Valve元素,不是Value。

Engine

Engine代表处理与Service关联的整个请求处理机制。它从一个或多个Connector接收并处理全部请求,并返回完整的响应信息给Connector,最终返回到客户端。
Engine元素必须嵌入在Service元素内。

属性

defaultHost:默认的主机名,它必须指向一个Host元素的name属性。

name:Engine的逻辑名称,用于日志和错误信息。如果在一个Server中使用多个Service元素,每个Engine必须使用唯一的名称。

Host

Host代表一个虚拟主机,它关联了一个Tomcat服务器正在运行的的网络名称(如www.xxx.com)。很多情况下,系统管理员会关联多个域名到这个虚拟主机和应用上。

Host都是嵌入到Engine元素中的,可以配置多个。在Host元素中,可以为嵌入Web应用的Context信息,并关联到这个虚拟主机。

每个Engine中必须有一个Host名称来匹配Engine的defaultHost属性,即必须有一个Host作为Engine的默认主机。

属性

appBase:虚拟主机的应用程序根路径。这是个文件路径名,包含了部署到虚拟主机的应用程序。可以指定为一个绝对路径,或者关联到$CATALINA_BASE目录的相对路径。默认值为"webapps"。
name:一般是虚拟主机注册到DNS的网络名称。必须有一个Host的name作为Engine的defaultHost。

Cluster

Tomcatd的集群实现提供了session复制、Context属性复制、和集群范围的WAR包部署。
然而集群配置是相当复杂的,默认的配置对于大多数人是开箱可用的。

官网原文地址:http://tomcat.apache.org/tomc...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66898.html

相关文章

  • Tomcat安装、配置、优化及负载均衡详解

    摘要:已成为目前开发企业应用的最佳容器选择之一。到安装目录文件中查找元素。 一、常见JavaWeb服务器 1、WebLogic:是BEA公司的产品、WebSphereAS:是IBM公司的产品、JBossAS:红帽公司的产品,可以自行了解 2、Tomcat服务器: Sun公司在推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomca...

    caikeal 评论0 收藏0
  • 图解Tomcat server.xml配置结构

    摘要:是一组和的结合体。相当于网络通道,配置了通信协议。用于从外部接收请求,交给处理,然后对外返回响应。虚拟主机,配置了网络名称,应用程序路径等,是的组成单元。我们部署的每个就是一个,每个应用相关的信息都配置在这个元素上。详细说明见配置文件详解 整理了一下Tomcat server.xml配置文件的元素概念和功能关系, Server是整个配置的根元素。 Service是一组Connecto...

    CloudwiseAPM 评论0 收藏0
  • tomcat

    摘要:服务器插件在其他的服务器进程内部地址空间启动一个虚拟机,容器组件在此虚拟机中运行。如有客户端发出调用请求,服务器插件获得对此请求的控制并转发给容器组件使用通讯机制,即本地调用接口。 博文参考 http://xtony.blog.51cto.com/3964396/988706/ http://blog.sina.com.cn/s/blog_a0e7e34c01015nes.html h...

    李世赞 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<