Tomcat 常用配置

Server.xml 包含以下元素

Server

<Server>是配置文件的顶层元素且唯一,它的属性代表整个Servlet容器的特征。

Server支持以下通用属性:

属性描述
className实现类的Java类名。该类必须实现org.apache.catalina.Server接口。如果未指定类名,则将使用标准实现。
address服务器等待shutdown命令的TCP / IP地址。如果未指定地址,则使用localhost
port服务器等待shutdown命令的TCP / IP端口号。设置为-1禁用关闭端口。
portOffset端口偏移量。它必须是非负整数。如果未指定,则使用默认值0
shutdown指定通过TCP / IP连接接收到指定端口的命令字符串,用于关闭Tomcat。
utilityThreads各种实用任务的线程数,包括重复执行的任务。

service

service由共享的请求处理引擎(Engine)和一个或多个连接器(Connector)组成。

Service支持以下属性:

属性描述
className实现类的Java类名。该类必须实现org.apache.catalina.Service接口。如果未指定类名,则将使用标准实现。
nameService 的名称

Executor

Executor表示tomcat组件之间共享的线程池,Executor必须实现 org.apache.catalina.Executor 接口,Executor是Service元素的内嵌元素,为了可以被connectors获取,所以必须写在Connector元素前。

Executor支持以下属性:

属性描述
className实现的类。实现必须实现 org.apache.catalina.Executor接口。此接口确保可以通过其name属性引用对象并实现Lifecycle,以便可以使用容器启动和停止对象。className的默认值是org.apache.catalina.core.StandardThreadExecutor
name用于在server.xml中的其他位置引用该线程池的名称。名称是必需的,必须是唯一的。

默认实现支持以下属性:

属性描述
threadPriority(int)Executor 中线程的线程优先级,默认为 5Thread.NORM_PRIORITY常量的值)
daemon(boolean)线程是否应该是守护线程,默认为 true
namePrefix(String)执行程序创建的每个线程的名称前缀。单个线程的线程名称将是namePrefix+threadNumber
maxThreads(int)线程池中活动线程的最大数量,默认为 200
minSpareThreads(int)始终保持活动状态的最小线程数,默认为 25
maxIdleTime(int)空闲线程生存时间。默认值为60000(1分钟)
maxQueueSize(int)等待执行的任务队列的最大数量。默认值是Integer.MAX_VALUE
prestartminSpareThreads(boolean)是否应该在启动Executor时启动minSpareThreads数量的线程,默认值为 false
threadRenewalDelay(long)如果配置了ThreadLocalLeakPreventionListener,会监听一个请求是否停止,如果停止,池中的线程将被更新。为避免同时更新所有线程,此选项用于设置任意2个线程更新之间的延迟。以ms为单位,默认值为1000ms。如果值为负,则不会更新线程。

Connector

Connector分为三Http Connector、AJP Connector,Http连接器支持http1.1或者http2,这里列举常用的Http Connector属性,其余属性可通过官方文档查阅。

部分通用属性

属性描述
asyncTimeout异步请求的默认超时时间(以毫秒为单位)。如果未指定,则将此属性设置为Servlet规范默认值30000(30秒)。
redirectPort如果此连接器支持非SSL请求,并且收到需要SSL传输的请求,则Catalina将自动将请求重定向到此处指定的端口号。
URIEncodingURI字符编码格式。如果未指定,将使用UTF-8。
minProcessors服务器启动时创建的处理请求的线程数(处理请求的最小线程数)。
maxProcessors最大可以创建的处理请求的线程数。

Context

Context代表一个web应用程序,Context中包含一个或多个Servlet,当请求被分配到当前Context时,Context将选择一个匹配的Servlet来进行处理(使用servlet-mapping中的url-pattern进行匹配)

常见通用属性

属性描述
cookies是否支持cookie,如果为true,则支持cookie。
docBase项目Root目录地址。
override当设置为true时,忽略全局或者host的默认设置。
path上下文路径,与每个请求URI的开头匹配,以选择适当的Web应用程序进行处理。(即项目访问地址)
reloadable设置为true时,将启动热部署。

Engine

Engine 是与特定的Service关联的请求处理器,它接收并处理一个或多个Connector的所有请求,并将完成的响应返回给Connector,最终传输给客户端。

Host

代表一个虚拟主机节点,没有host下可以有多个web项目,一个web项目对应一个Context,也就是Host元素下可以配置多个Context元素。Host元素嵌套在Engine元素内。

常见通用属性

属性描述
appBase此虚拟主机的Application Base目录。如果未指定,将使用默认值 webapps
xmlBase此虚拟主机的XML Base目录。如果未指定,将使用默认值conf/<engine_name>/<host_name>
createDirs如果设置为true,Tomcat将在启动阶段尝试创建目录appBasexmlBase。默认值为true。如果设置为true,并且目录创建失败,将打印出错误消息但不会停止启动序列。
autoDeploy是否开启自动部署。

Cluster

Cluster是tomcat集群配置节点。tomcat集群实现提供会话复制,上下文属性复制和集群范围的WAR文件部署。

SimpleTcpCluster属性

属性描述
className集群类,目前只有org.apache.catalina.ha.tcp.SimpleTcpCluster可用。
channelSendOptionschannel发送选项。
channelStartOptions设置集群使用的对象的开始和停止标志。
heartbeatBackgroundEnabled容器后台线程是否调用channel心跳。默认值为false。
notifyLifecycleListenerOnFailure如果所有ClusterListener都不接受channel消息,是否通知LifecycleListeners。默认值为false。

Tomcat 配置结构

配置文件整体结构如下

<Server>
    <Service>
        <Connector />
        <Connector />
        <Engine>
            <Host>
                <Context />
            </Host>
        </Engine>
    </Service>
</Server>

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

人生中没有四季 唯有那寒冬的荒野