- 简介
- 属性
- 嵌套组件
- 标准实现
- APR 生命周期监听器 - org.apache.catalina.core.AprLifecycleListener
- 上下文命名信息监听器 - org.apache.catalina.core.ContextNamingInfoListener
- 全局资源生命周期监听器 - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
- JNI 库加载监听器 - org.apache.catalina.core.JniLifecycleListener
- JRE 内存泄漏预防监听器 - org.apache.catalina.core.JreMemoryLeakPreventionListener
- OpenSSL 生命周期监听器 - org.apache.catalina.core.OpenSSLLifecycleListener
- 属性角色映射监听器 - org.apache.catalina.core.PropertiesRoleMappingListener
- 安全生命周期监听器 - org.apache.catalina.security.SecurityListener
- StoreConfig 生命周期监听器 - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
- ThreadLocal 泄漏预防监听器 - org.apache.catalina.core.ThreadLocalLeakPreventionListener
- TLS 配置重新加载监听器 - org.apache.catalina.security.TLSCertificateReloadListener
- UserConfig - org.apache.catalina.startup.UserConfig
- 版本记录生命周期监听器 - org.apache.catalina.startup.VersionLoggerListener
- HTTPD mod_heartmonitor 监听器 - org.apache.catalina.ha.backend.HeartbeatListener
生命周期监听器组件
目录
简介
侦听器元素定义在特定事件(通常是 Tomcat 启动或停止)发生时执行操作的组件。
侦听器可以嵌套在 服务器、引擎、主机 或 上下文 中。某些侦听器仅用于嵌套在特定元素中。这些约束在下面的文档中进行了说明。
属性
通用属性
侦听器的所有实现都支持以下属性
属性 | 说明 |
---|---|
className |
要使用的实现的 Java 类名。此类必须实现 |
嵌套组件
不得在 侦听器中嵌套任何元素。
标准实现
与大多数 Catalina 组件不同,有几个可用的标准 侦听器实现。因此,必须使用 className
属性来选择要使用的实现。
APR 生命周期监听器 - org.apache.catalina.core.AprLifecycleListener
APR 生命周期侦听器检查 Apache Tomcat Native 库是否存在,如果存在,则加载该库。有关更多信息,请参阅 APR/native 指南。
此侦听器只能嵌套在 服务器 元素中。
APR 生命周期侦听器支持以下其他属性
属性 | 说明 |
---|---|
SSLEngine |
要使用的 SSLEngine 的名称。 默认值为 on。这会初始化本机 SSL 引擎,该引擎必须通过使用 有关受支持的 SSL 硬件引擎和制造商的更多详细信息,请参阅 官方 OpenSSL 网站。 Tomcat Native 2.x 及更高版本需要 SSL,因此如果在使用 Tomcat Native 2.x 及更高版本时将 SSLEngine 设置为 |
SSLRandomSeed |
用于播种 SSLEngine 的 PRNG 的熵源。默认值为 |
FIPSMode |
此属性的行为取决于 Tomcat Native 是针对 OpenSSL 1.x 还是 OpenSSL 3.x 编译的。 对于 OpenSSL 1.x:设置为 对于 OpenSSL 3.x: FIPS 模式要求您拥有支持 FIPS 的 OpenSSL 库。如果此属性设置为除 默认值为 |
useOpenSSL |
此属性控制 OpenSSL JSSE 实现的自动选择。默认值为 |
上下文命名信息监听器 - org.apache.catalina.core.ContextNamingInfoListener
上下文命名信息侦听器从 上下文 添加以下环境条目(隐含 java:comp/env
):context/path
、context/encodedPath
、context/webappVersion
、context/name
、context/baseName
、context/displayName
。
此侦听器只能嵌套在 上下文 元素中。
上下文命名信息侦听器支持以下附加属性
属性 | 说明 |
---|---|
emptyOnRoot |
对于根上下文, 默认值为 |
全局资源生命周期监听器 - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
JNI 库加载监听器 - org.apache.catalina.core.JniLifecycleListener
JNI 库加载侦听器通过使用共享类加载器(通常是公共类加载器,但在某些配置中可能有所不同)加载本机库,使多个 Web 应用能够使用本机库
侦听器支持两个互斥的属性,因此必须使用其中一个,但不能同时使用这两个属性
属性 | 说明 |
---|---|
libraryName |
本机库的名称,如在 |
libraryPath |
本机库的绝对路径,如在 |
JRE 内存泄漏预防监听器 - org.apache.catalina.core.JreMemoryLeakPreventionListener
JRE 内存泄漏预防侦听器为已知 Java 运行时环境使用上下文类加载器加载单例的地方提供解决方法,因为如果 Web 应用程序类加载器恰好是当时的上下文类加载器,这将导致内存泄漏。解决方法是在此侦听器启动时初始化这些单例,因为 Tomcat 的常见类加载器在当时是上下文类加载器。它还为可能导致 JAR 文件锁定的已知问题提供解决方法。
此侦听器只能嵌套在 服务器 元素中。
JRE 内存泄漏预防侦听器支持以下其他属性
属性 | 说明 |
---|---|
appContextProtection |
启用保护,以便由 Web 应用程序触发的 |
classesToInitialize |
此侦听器启动期间要加载和初始化的逗号分隔的完全限定类名的列表。这允许预加载已知在请求处理期间加载时会引发类加载器泄漏的类。可以引用非 JRE 类,如 |
driverManagerProtection |
首次使用 |
initSeedGenerator |
首次使用 |
urlCacheProtection |
启用保护,以便使用 |
JreMemoryLeakPreventionListener 示例
以下是如何配置此侦听器的 classesToInitialize
属性的示例。
如果在 server.xml 中将此侦听器配置为
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
classesToInitialize="oracle.jdbc.driver.OracleTimeoutThreadPerVM" />
则 OracleTimeoutThreadPerVM
类将在侦听器启动期间加载并初始化,而不是在请求处理期间加载并初始化。
OpenSSL 生命周期监听器 - org.apache.catalina.core.OpenSSLLifecycleListener
OpenSSL 生命周期侦听器检查 OpenSSL 库是否存在,并在存在时加载该库。这使用 Java 22 中的 FFM API,而不是其他本机代码。启用并成功加载后,NIO 和 NIO2 连接器将使用 OpenSSL 来实现 TLS 功能。这是上面描述的 APR 生命周期侦听器 的功能性替代品。
此侦听器只能嵌套在 服务器 元素中。
OpenSSL 生命周期侦听器 支持以下其他属性
属性 | 说明 |
---|---|
SSLEngine |
适用于 OpenSSL 1.x 的 SSLEngine 名称。 有关受支持的 SSL 硬件引擎和制造商的更多详细信息,请参阅 官方 OpenSSL 网站。 |
SSLRandomSeed |
用于播种 SSLEngine 的 PRNG 的熵源。默认值为 |
FIPSMode |
此属性的行为取决于 Tomcat Native 是针对 OpenSSL 1.x 还是 OpenSSL 3.x 编译的。 对于 OpenSSL 1.x:设置为 对于 OpenSSL 3.x: FIPS 模式要求您拥有支持 FIPS 的 OpenSSL 库。如果此属性设置为除 默认值为 |
useOpenSSL |
此属性控制 OpenSSL JSSE 实现的自动选择。默认值为 |
属性角色映射监听器 - org.apache.catalina.core.PropertiesRoleMappingListener
属性角色映射侦听器从属性文件中填充上下文的 role mapping。键表示应用程序角色(例如,admin、user、uservisor 等),而值表示技术角色(例如,DN、SID、UUID 等)。如果属性文件也包含通用应用程序配置,则键也可以加上前缀:app-roles.
。
此侦听器只能嵌套在 上下文 元素中。
属性角色映射侦听器 支持以下其他属性
属性 | 说明 |
---|---|
roleMappingFile |
角色映射属性文件的路径。可以使用协议 默认值为 |
keyPrefix |
从属性键中过滤的前缀。所有其他没有前缀的键都将被忽略。 |
安全生命周期监听器 - org.apache.catalina.security.SecurityListener
安全生命周期侦听器在 Tomcat 启动时执行多项安全检查,并在检查失败时阻止 Tomcat 启动。侦听器默认情况下未启用。要启用它,请取消注释 $CATALINA_BASE/conf/server.xml 中的侦听器。
此侦听器只能嵌套在 服务器 元素中。
安全生命周期侦听器支持以下附加属性
属性 | 说明 |
---|---|
checkedOsUsers |
以逗号分隔的 OS 用户列表,不得用于启动 Tomcat。如果未指定,则使用默认值 root。要禁用此检查,请将属性设置为一个空字符串。以不区分大小写的方式检查用户名。 |
minimumUmask |
在 Tomcat 启动之前必须配置的最不严格的 umask。如果未指定,则使用默认值 0007。要禁用此检查,请将属性设置为一个空字符串。在 Windows 平台上不执行此检查。 |
buildDateWarningAgeDays |
此 Tomcat 实例的构建日期与其启动日期之间允许的最大天数,超过此天数后将记录警告。设置为小于 0 的任何值(例如 -1)以禁用此检查。如果未指定,则使用默认值 -1。 |
StoreConfig 生命周期监听器 - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
StoreConfig 生命周期侦听器配置一个 StoreConfig MBean,该 MBean 可用于将当前服务器配置保存在 server.xml 中,或将 Web 应用程序的当前配置保存在 context.xml 文件中。
此侦听器只能嵌套在 服务器 元素中。
StoreConfig 生命周期侦听器支持以下附加属性
属性 | 说明 |
---|---|
storeConfigClass |
要使用的 |
storeRegistry |
配置 |
ThreadLocal 泄漏预防监听器 - org.apache.catalina.core.ThreadLocalLeakPreventionListener
TLS 配置重新加载监听器 - org.apache.catalina.security.TLSCertificateReloadListener
此侦听器可用于监视 TLS 证书的到期日期,并在 TLS 证书到期前一定天数触发 TLS 配置的自动重新加载。
此监听器假定有其他进程(certbot、云基础设施等)定期更新证书,并用新证书替换当前证书。
此监听器不会从 server.xml 重新读取 Tomcat 配置。如果您对 server.xml 进行更改,则必须重新启动 Tomcat 进程才能获取这些更改。
此侦听器只能嵌套在 服务器 元素中。
属性 | 说明 |
---|---|
checkPeriod |
重新加载检查之间的秒数。 |
daysBefore |
TLS 证书到期前的天数,在此期间预计新证书将就位,并且可以触发重新加载。如果未指定,则使用默认值 14 天。 |
UserConfig - org.apache.catalina.startup.UserConfig
UserConfig 提供用户 Web 应用程序的功能。用户 Web 应用程序将以波浪号 (“~”) 和用户名开头的请求 URI 映射到服务器上该用户主目录中的目录(通常称为 public_html)。
有关更多信息,请参阅Host 元素上的用户 Web 应用程序特殊功能。
UserConfig 支持以下附加属性
属性 | 说明 |
---|---|
directoryName |
要在每个用户主目录中搜索的目录名称。默认值为 |
userClass |
用户数据库类的类名。目前有两个用户数据库, |
homeBase |
包含用户主目录的基本目录。仅当使用 |
allow |
定义允许部署用户的正则表达式。如果指定此属性,则要部署的用户必须匹配此模式。如果未指定此属性,则将部署所有用户,除非用户匹配拒绝模式。 |
deny |
定义拒绝部署用户的正则表达式。如果指定此属性,则要部署的用户不能匹配此模式。如果未指定此属性,则用户的部署将受允许属性控制。 |
版本记录生命周期监听器 - org.apache.catalina.startup.VersionLoggerListener
版本日志生命周期侦听器在 Tomcat 启动时记录 Tomcat、Java 和操作系统信息。
此侦听器只能嵌套在 Server 元素内,并且应该是定义的第一个侦听器。
版本日志生命周期侦听器支持以下其他属性
属性 | 说明 |
---|---|
logArgs |
如果为 |
logEnv |
如果为 |
logProps |
如果为 |
HTTPD mod_heartmonitor 监听器 - org.apache.catalina.ha.backend.HeartbeatListener
HTTPD mod_heartmonitor 侦听器允许 tomcat 向 Apache HTTPD mod_heartmonitor 模块发送心跳消息。
HTTPD mod_heartmonitor 侦听器支持以下其他属性
属性 | 说明 |
---|---|
Port |
将接收来自 HTTPD 的代理流量的连接器端口,默认情况下将使用第一个连接器 |
主机 |
Host 是与将接收代理流量的连接器的地址相对应的 IP,默认情况下为空,将使用端口 |
proxyURL |
proxyURL 是与心跳处理程序的 httpd 配置中的位置相对应的 URL,默认值为 /HeartbeatListener |
ProxyList |
ProxyList 是 tomcat 将接收请求的代理列表,格式为“address:port,address:port”,一旦填写,多播逻辑将被禁用,并且将忽略多参数 |
Group |
Group 是用于向 HTTPD 广播消息的多播 IP,默认值为 224.0.1.105 |
Multiport |
Multiport 是用于向 HTTPD 广播消息的多播端口,默认值为 23364 |
Ttl |
Ttl 是广播消息的 TTL,默认值为 16 |