系统属性

目录

简介

以下部分列出了可用于修改默认 Tomcat 行为的系统属性。

属性替换

属性 说明
org.apache.tomcat.util.digester. PROPERTY_SOURCE

将其设置为实现 org.apache.tomcat.util.IntrospectionUtils.PropertySource 的类的完全限定名称的逗号分隔列表。需要具有无参数的公共构造函数。

使用此方法添加属性源,当在 Tomcat 解析的 XML 文件中找到 ${parameter:-default-value} 表示的参数(具有可选的默认值)时,将调用该属性源。

还可以使用 REPLACE_SYSTEM_PROPERTIES 系统属性对 JVM 系统属性中的指定属性源进行属性替换。

org.apache.tomcat.util.digester.ServiceBindingPropertySource 可用于替换遵循 servicebinding.io 规范的任何 Kubernetes 服务绑定的参数

org.apache.tomcat.util.digester.EnvironmentPropertySource 可用于替换进程环境变量中的参数,例如基于容器的系统(如 OpenShift 或 Kubernetes)中注入的 ConfigMap 或 Secret 对象。

org.apache.tomcat.util.digester.SystemPropertySource 用系统属性进行替换。它始终处于启用状态,但也可以指定为属性值的一部分。

org.apache.tomcat.util.digester. REPLACE_SYSTEM_PROPERTIES

将此布尔系统属性设置为 true,以导致对 JVM 系统属性中的 digester 属性源进行属性替换。

表达式语言

属性 说明
org.apache.el. GET_CLASSLOADER_USE_PRIVILEGED

控制 EL API 类是否利用特权块来获取线程上下文类加载器。在 Apache Tomcat 中使用 EL API 时,不需要设置此项,因为所有调用都已包装在堆栈上方的特权块中。如果在 Apache Tomcat 之外的 SecurityManager 下使用 EL API,则可能需要此项。

如果未指定,将使用默认值 false

org.apache.el.BeanELResolver. CACHE_SIZE

EL 解析器将缓存的 jakarta.el.BeanELResolver.BeanProperties 对象的数量。

如果没有指定,将使用默认值 1000

org.apache.el.ExpressionBuilder. CACHE_SIZE

EL 解析器将缓存的已解析 EL 表达式的数量。

如果没有指定,将使用默认值 5000

org.apache.el.parser. COERCE_TO_ZERO

如果为 true,则在将 null 转换为 Number、Character 或 Boolean 类型的对象时,结果将是 Number 和 Character 类型的 0,而 Boolean 类型的 false,如 EL 2.2 及更早版本规范所要求的。如果此属性为 false,则转换结果将为 null,如 EL 3.0 规范所要求的。

如果没有指定,将使用默认值 false

org.apache.el.parser. SKIP_IDENTIFIER_CHECK

如果为 true,则在解析表达式时,不会检查标识符以确保它们符合 Java 标识符的 Java 语言规范。

如果没有指定,将使用默认值 false

规范

属性 说明
org.apache.catalina. STRICT_SERVLET_COMPLIANCE

此系统属性的默认值为 false

如果为 true,则默认值将更改为 true,而不是 false,适用于

  • 任何 Context 元素的 alwaysAccessSession 属性。
  • 任何 Context 元素的 contextGetResourceRequiresSlash 属性。
  • 任何 Context 元素的 dispatcherWrapsSameObject 属性。
  • 任何 Context 元素的 resourceOnlyServlets 属性。
  • 任何 Context 元素的 tldValidation 属性。
  • 任何 Context 元素的 useRelativeRedirects 属性。
  • 任何 Context 元素的 xmlNamespaceAware 属性。
  • 任何 Context 元素的 xmlValidation 属性。
  • 任何 Manager 元素的 sessionActivityCheck 属性。
  • 任何 Manager 元素的 sessionLastAccessAtStart 属性。

日志记录

属性 说明
org.apache.juli.formatter

如果没有指定日志记录配置文件,也没有使用 java.util.logging.config.classjava.util.logging.config.file 属性指定日志记录配置类,则默认日志记录框架 org.apache.juli 将对所有控制台输出使用默认的 java.util.logging.SimpleFormatter。要简单地覆盖控制台输出格式化程序,可以使用所述属性。示例:-Dorg.apache.juli.formatter=org.apache.juli.OneLineFormatter

org.apache.juli. AsyncMaxRecordCount

JULI AsyncFileHandler 将在内存中排队的日志记录的最大数量。新记录被添加到队列中,并由单个写入线程异步地从队列中删除并写入文件。当队列已满且正在记录新记录时,将根据 org.apache.juli.AsyncOverflowDropType 设置处理日志记录。

默认值为 10000 条记录。此数字表示记录的全局数量,而不是按处理程序计算的数量。

org.apache.juli. AsyncOverflowDropType

当 JULI AsyncFileHandler 的日志记录队列已满时,将根据以下设置处理新日志记录

  • 1 - 将丢弃队列中最新的记录,而不进行记录
  • 2 - 将丢弃队列中最旧的记录,而不进行记录
  • 3 - 挂起日志记录线程,直到较旧的记录被写入日志文件且队列不再已满。这是确保不会丢失任何消息的唯一设置。
  • 4 - 丢弃当前日志记录

默认值为 1(丢弃队列中最新的记录)。

org.apache.juli.logging. UserDataHelper.CONFIG

用于记录因无效输入数据而产生的错误的日志记录类型。选项包括:DEBUG_ALLINFO_THEN_DEBUGINFO_ALLNONE。当使用 INFO_THEN_DEBUG 时,在 DEBUG 而不是 INFO 级别记录错误的时间段由系统属性 org.apache.juli.logging.UserDataHelper.SUPPRESSION_TIME 控制。

默认值为 INFO_THEN_DEBUG

当前使用此系统记录的错误包括

  • 无效 cookie;
  • 无效参数;
  • 标头过多,参数过多(达到 连接器maxHeaderCountmaxParameterCount 限制)。
  • 无效主机名
  • HTTP/2 流关闭

由无效输入数据触发的其他错误可能会在以后的版本中添加到此系统。

org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME

当对 org.apache.juli.logging.UserDataHelper.CONFIG 使用 INFO_THEN_DEBUG 时,此系统属性控制在 INFO 级别记录消息后,在 DEBUG 级别记录消息的时间长度。此时间段过去后,下一条消息将记录在 INFO 级别,然后进入新的抑制时间段,在此期间消息将记录在 DEBUG 级别,依此类推。该值以秒为单位进行测量。

0 的值等效于对 org.apache.juli.logging.UserDataHelper.CONFIG 使用 INFO_ALL

负值表示无限抑制时间段。

默认值为86400(24 小时)。

JAR 扫描

属性 说明
tomcat.util.scan. StandardJarScanFilter.jarsToSkip

以逗号分隔的文件名模式列表,用作标准 JarScanFilter 实现的 pluggabilitySkiptldSkip 属性的默认值。

编码的默认值为空,但是系统属性在默认 Tomcat 安装中通过 $CATALINA_BASE/conf/catalina.properties 文件设置。

tomcat.util.scan. StandardJarScanFilter.jarsToScan

以逗号分隔的文件名模式列表,用作标准 JarScanFilter 实现的 pluggabilityScantldScan 属性的默认值。

编码的默认值为空,但是系统属性在默认 Tomcat 安装中通过 $CATALINA_BASE/conf/catalina.properties 文件设置。

WebSocket

属性 说明
org.apache.tomcat. websocket.DEFAULT_BUFFER_SIZE

Websockets 容器中使用的缓冲区的默认大小。

默认值为 8192,对应于 8 KiB。

org.apache.tomcat. websocket.DEFAULT_ORIGIN_HEADER_VALUE

客户端在升级握手期间发送的 origin 标头的默认值。

默认值为 null,因此不发送 origin 标头。

org.apache.tomcat. websocket.DEFAULT_PROCESS_PERIOD

定期处理(特别是会话过期检查)之间的定期滴答数。

默认值为 10,对应于 10 秒。

其他

属性 说明
catalina.useNaming

如果此值为 false,它将覆盖所有 Context 元素的 useNaming 属性。

javax.sql.DataSource.Factory

用于创建 javax.sql.DataSource 类型资源的工厂的类名。如果未指定,则使用 org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory 的默认值,它是 Apache Commons DBCP 2 的重命名(以避免冲突)副本。

jakarta.mail.Session.Factory

用于创建 jakarta.mail.Session 类型资源的工厂的类名。如果未指定,则使用 org.apache.naming.factory.MailSessionFactory 的默认值。

catalina.config

加载 catalina.properties 配置文件的位置。这可能是一个绝对 URL、一个相对(到当前工作目录)的 URL 或一个备用文件名,在这种情况下,Tomcat 将尝试从 $CATALINA_BASE/conf/ 的默认位置加载文件。

tomcat.util.buf.StringCache.byte.enabled

如果为 true,则为 ByteChunk 启用字符串缓存。

如果没有指定,将使用默认值 false

tomcat.util.buf.StringCache.char.enabled

如果为 true,则为 CharChunk 启用字符串缓存。

如果没有指定,将使用默认值 false

tomcat.util.buf.StringCache.trainThreshold

在激活缓存之前必须调用 toString() 的次数。

如果没有指定,将使用默认值 20000

tomcat.util.buf.StringCache.cacheSize

String 缓存的大小。

如果没有指定,将使用默认值 200

org.apache.tomcat.util.buf.UriUtil. WAR_SEPARATOR

使用 Tomcat 提供的自定义 WAR 方案,将 WAR 文件和 WAR 内容部分分开的字符。这相当于在 JAR URL 中使用 !

如果没有指定,将使用默认值 *

tomcat.util.buf.StringCache.maxStringSize

将被缓存的 String 的最大长度。

如果没有指定,将使用默认值 128

org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE

用于解析和格式化日期值的缓存大小。

如果没有指定,将使用默认值 1000

org.apache.catalina.startup. EXIT_ON_INIT_FAILURE

如果为 true,则在服务器初始化阶段发生异常时,服务器将退出。为了支持此功能,此系统属性用作连接器 throwOnFailure 属性的默认值。

如果没有指定,将使用默认值 false

org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS

CombinedRealm 允许嵌套 Realm。此属性控制允许的最大嵌套级别数。

如果没有指定,将使用默认值 3

org.apache.catalina.startup. CredentialHandlerRuleSet.MAX_NESTED_LEVELS

NestedCredentialHandler 允许嵌套 CredentialHandler。此属性控制允许的最大嵌套级别数。

如果没有指定,将使用默认值 3

org.apache.catalina.tribes.io. BufferPool.DEFAULT_POOL_SIZE

Tribes 使用的缓冲池的大小(以字节为单位)。

如果没有指定,将使用默认值 100*1024*1024(100 MiB)。