Tomcat server.xml 配置文件详解
server.xml 是 Tomcat 最核心的配置文件,定义了服务器的整体结构、组件关系及运行参数。本文将逐节点解析其配置细节,帮助理解 Tomcat 的工作机制及优化配置。
配置文件整体结构
Tomcat 的 server.xml 采用 XML 格式,核心节点层级关系如下:
1 | <Server> <!-- 整个 Tomcat 服务器 --> |
每个节点代表 Tomcat 的一个核心组件,负责特定功能。
核心节点解析
<Server>:整个 Tomcat 实例的根节点
<Server> 是配置文件的根元素,代表整个 Tomcat 服务器,负责启动和管理所有组件。
主要属性
port:服务器监听的关闭端口(默认 8005),用于接收关闭命令。shutdown:关闭服务器的指令字符串(默认SHUTDOWN)。示例:通过
telnet发送关闭命令:1
2telnet 127.0.0.1 8005
SHUTDOWN # 输入后 Tomcat 会关闭
子节点
<Listener>:生命周期监听器,用于监控服务器启动、停止等事件(如VersionLoggerListener记录版本信息)。<GlobalNamingResources>:全局 JNDI 资源配置(如数据源),供所有应用共享。<Service>:一个或多个服务组件,每个服务包含连接器和引擎。
<Service>:连接器与引擎的组合
<Service> 将多个连接器(Connector)与一个引擎(Engine)绑定,形成一个独立的服务单元。
属性
name:服务名称(默认Catalina),用于标识服务。
子节点
<Executor>:配置共享线程池,供多个连接器复用(优化性能)。<Connector>:连接器,负责接收客户端请求。<Engine>:引擎,负责处理连接器接收的请求。
<Executor>:共享线程池(性能优化关键)
<Executor> 定义全局线程池,多个连接器可共享该线程池,避免重复创建线程,提升性能。默认不配置,需手动添加。
配置示例
1 | <Executor |
使用方式
在 <Connector> 中通过 executor 属性引用:
1 | <Connector |
<Connector>:请求接收与协议处理
<Connector> 是 Tomcat 与客户端通信的接口,负责监听端口、接收请求并转换协议。默认配置 HTTP 和 AJP 两种连接器。
主要属性分类
| 类别 | 核心属性 |
|---|---|
| 基础配置 | port(端口)、protocol(协议,如 HTTP/1.1、AJP/1.3)、connectionTimeout(连接超时,默认 20000 毫秒)。 |
| 性能优化 | maxThreads(最大处理线程数)、acceptCount(请求排队数)、maxConnections(最大并发连接数)。 |
| 编码与安全 | URIEncoding(URI 编码,默认 ISO-8859-1,建议设为 UTF-8)、redirectPort(HTTPS 重定向端口,默认 8443)。 |
| 压缩配置 | compression="on"(启用 GZIP 压缩)、compressionMinSize(压缩阈值,默认 2048 字节)、compressableMimeType(压缩的 MIME 类型)。 |
配置示例(HTTP 连接器)
1 | <Connector |
<Engine>:请求处理的核心引擎
<Engine> 是服务的请求处理核心,负责将请求路由到对应的虚拟主机(Host)。一个 <Service> 只能有一个 <Engine>。
主要属性
name:引擎名称(默认Catalina)。defaultHost:默认虚拟主机(默认localhost),当请求的主机不存在时使用。jvmRoute:负载均衡场景下的实例标识,用于粘性会话(如tomcat1)。
子节点
<Host>:虚拟主机,引擎通过主机名匹配请求。<Realm>:全局安全认证配置(如用户名密码验证)。
<Host>:虚拟主机配置
<Host> 代表一个虚拟主机(网站),负责管理多个 Web 应用(Context)。
主要属性
name:主机名(如localhost或www.example.com),需与 DNS 配置一致。appBase:应用基础目录(默认webapps),存放 WAR 包或目录形式的 Web 应用。unpackWARs:是否自动解压 WAR 包(默认true,建议生产环境设为false节省空间)。autoDeploy:是否自动部署新应用(默认true,定期扫描appBase目录)。
配置示例
1 | <Host |
<Context>:Web 应用上下文
<Context> 配置单个 Web 应用,定义应用的访问路径、部署位置等。
主要属性
path:应用访问路径(如/myapp,根路径用"")。docBase:应用实际路径(可是目录或 WAR 包,如webapps/myapp或/opt/apps/myapp.war)。reloadable:是否自动重载(默认false,开发环境可设为true,监控WEB-INF目录变更)。
配置示例
1 | <!-- 将 /opt/myapp 目录映射到 /test 路径 --> |
子节点(常用)
<Manager>:会话管理器配置(如持久化到文件或数据库)。<Loader>:类加载器配置(控制类加载顺序)。<CookieProcessor>:Cookie 解析器(默认Rfc6265CookieProcessor,兼容最新标准)。
实用配置场景
1. 多虚拟主机配置
通过多个 <Host> 实现多网站部署:
1 | <Engine name="Catalina" defaultHost="localhost"> |
2. 会话持久化配置
将会话存储到文件(避免 Tomcat 重启丢失会话):
1 | <Context path="/myapp"> |
3. 解决中文乱码
在 HTTP 连接器中设置编码:
1 | <Connector |