系統屬性

目錄

簡介

下列各節列出可設定為修改預設 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)中注入的 ConfigMaps 或 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

INFO_THEN_DEBUG 用於 org.apache.juli.logging.UserDataHelper.CONFIG 時,此系統屬性會控制在 INFO 層級記錄訊息後,在 DEBUG 層級記錄訊息的時間長度。此期間過後,下一個訊息將記錄在 INFO 層級,接著是新的抑制期間,訊息會記錄在 DEBUG 層級,依此類推。此值以秒為單位衡量。

0 的值等於將 INFO_ALL 用於 org.apache.juli.logging.UserDataHelper.CONFIG

負值表示無限抑制期間。

預設值為 86400(24 小時)。

JAR 掃描

屬性 說明
tomcat.util.scan. StandardJarScanFilter.jarsToSkip

以逗號分隔的檔案名稱樣式清單,用作標準 JarScanFilter 實作的 pluggabilitySkiptldSkip 屬性的預設值。

編碼預設值為空,但系統屬性會透過 $CATALINA_BASE/conf/catalina.properties 檔案在預設的 Tomcat 安裝中設定。

tomcat.util.scan. StandardJarScanFilter.jarsToScan

以逗號分隔的檔案名稱樣式清單,用作標準 JarScanFilter 實作的 pluggabilityScantldScan 屬性的預設值。

編碼預設值為空,但系統屬性會透過 $CATALINA_BASE/conf/catalina.properties 檔案在預設的 Tomcat 安裝中設定。

Websockets

屬性 說明
org.apache.tomcat. websocket.DEFAULT_BUFFER_SIZE

Websockets 容器中使用的緩衝區的預設大小。

預設值為 8192,對應於 8 KiB。

org.apache.tomcat. websocket.DEFAULT_ORIGIN_HEADER_VALUE

在升級交握期間由用戶端傳送的來源標頭的預設值。

預設值為 null,因此不會傳送來源標頭。

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

字串快取的大小。

如果未指定,則會使用預設值 200

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

用於區分 Tomcat 提供的客製化 WAR 架構中 WAR 檔案和 WAR 內容部分的字元。這等同於在 JAR URL 中使用 ! 的方式。

如果未指定,則會使用預設值 *

tomcat.util.buf.StringCache.maxStringSize

快取字串的最大長度。

如果未指定,則會使用預設值 128

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

用於快取已剖析和格式化日期值的快取大小。

如果未指定,則會使用預設值 1000

org.apache.catalina.startup. EXIT_ON_INIT_FAILURE

如果為 true,則伺服器會在伺服器初始化階段發生例外狀況時結束。為了支援此功能,此系統屬性用作 Connector 的 throwOnFailure 屬性的預設值。

如果未指定,將使用預設值 false

org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS

CombinedRealm 允許巢狀 Realms。此屬性控制允許的巢狀層級最大數量。

如果未指定,則會使用預設值 3

org.apache.catalina.startup. CredentialHandlerRuleSet.MAX_NESTED_LEVELS

NestedCredentialHandler 允許巢狀 CredentialHandlers。此屬性控制允許的巢狀層級最大數目。

如果未指定,則會使用預設值 3

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

Tribes 使用的緩衝池大小,以位元組為單位。

如果未指定,將使用預設值 100*1024*1024 (100 MiB)。