システムプロパティ

目次

はじめに

以下のセクションでは、デフォルトの Tomcat の動作を変更するために設定できるシステムプロパティについて説明します。

プロパティの置換

プロパティ説明
org.apache.tomcat.util.digester. PROPERTY_SOURCE

org.apache.tomcat.util.IntrospectionUtils.PropertySource を実装するクラスの完全修飾名をカンマ区切りのリストで設定します。引数のない public コンストラクタが必要です。

Tomcat が解析する XML ファイルで ${parameter:-default-value} と表記されたパラメータ (オプションのデフォルト値付き) が見つかったときに呼び出されるプロパティソースを追加するために使用します。

JVM システムプロパティ上の指定されたプロパティソースからのプロパティ置換は、REPLACE_SYSTEM_PROPERTIES システムプロパティを使用して行うこともできます。

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

この boolean システムプロパティを true に設定すると、JVM システムプロパティ上で digester プロパティソースからのプロパティ置換が発生します。

式言語

プロパティ説明
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 型のオブジェクトに変換するとき、EL 2.2 以前の仕様で要求されているように、Number および Character 型の場合は 0、Boolean 型の場合は false になります。このプロパティが false の場合、変換の結果は EL 3.0 仕様で要求されているように null になります。

指定されていない場合、デフォルト値の false が使用されます。

org.apache.el.parser. SKIP_IDENTIFIER_CHECK

true の場合、式を解析するときに、識別子が Java 識別子の Java 言語仕様に準拠していることを確認するためのチェックは行われません。

指定されていない場合、デフォルト値の false が使用されます。

仕様

プロパティ説明
org.apache.catalina. STRICT_SERVLET_COMPLIANCE

このシステムプロパティのデフォルト値は false です。

これが true の場合、以下のデフォルト値が false の代わりに true に変更されます。

  • 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.class および java.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 です。

現在、このシステムを使用して記録されているエラーは

  • 無効なクッキー。
  • 無効なパラメータ。
  • ヘッダーが多すぎる、パラメータが多すぎる (コネクタmaxHeaderCount または maxParameterCount 制限に達した場合)。
  • 無効なホスト名
  • HTTP/2 ストリームのクローズ

無効な入力データによってトリガーされるその他のエラーは、以降のバージョンでこのシステムに追加される可能性があります。

org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME

org.apache.juli.logging.UserDataHelper.CONFIGINFO_THEN_DEBUG を使用する場合、このシステムプロパティは、メッセージが INFO で記録された後、メッセージが DEBUG でどのくらいの期間記録されるかを制御します。この期間が経過すると、次のメッセージは INFO で記録され、その後にメッセージが DEBUG で記録される新しい抑制期間が続きます。値は秒単位で測定されます。

0 の値は、org.apache.juli.logging.UserDataHelper.CONFIGINFO_ALL を使用するのと同じです。

負の値は、無限の抑制期間を意味します。

デフォルト値は 86400 (24 時間) です。

JAR スキャン

プロパティ説明
tomcat.util.scan. StandardJarScanFilter.jarsToSkip

標準 JarScanFilter 実装の pluggabilitySkip および tldSkip 属性のデフォルト値として使用される、カンマ区切りのファイル名パターンのリスト。

コード化されたデフォルトは空ですが、システムプロパティは、$CATALINA_BASE/conf/catalina.properties ファイルを介してデフォルトの Tomcat インストールで設定されます。

tomcat.util.scan. StandardJarScanFilter.jarsToScan

標準 JarScanFilter 実装の pluggabilityScan および tldScan 属性のデフォルト値として使用される、カンマ区切りのファイル名パターンのリスト。

コード化されたデフォルトは空ですが、システムプロパティは、$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 の場合、String キャッシュは ByteChunk に対して有効になります。

指定されていない場合、デフォルト値の false が使用されます。

tomcat.util.buf.StringCache.char.enabled

true の場合、String キャッシュは 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 URL の WAR ファイルと WAR コンテンツ部分を区切るために使用する文字。これは、JAR URL で ! が使用される方法と同等です。

指定されていない場合、デフォルト値の * が使用されます。

tomcat.util.buf.StringCache.maxStringSize

キャッシュされる String の最大長。

指定されていない場合、デフォルト値の 128 が使用されます。

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

解析およびフォーマットされた日付値に使用するキャッシュのサイズ。

指定されていない場合、デフォルト値の 1000 が使用されます。

org.apache.tomcat.util.openssl.LIBRARY_NAME

OpenSSL のライブラリ名を指定します。

指定されていない場合、MacOS を除くデフォルト値の ssl が使用されます。MacOS では、ssl.v の形式で、v がバージョン番号である dylib バージョン名が使用されます。

org.apache.tomcat.util.openssl.USE_SYSTEM_LOAD_LIBRARY

FFM ライブラリのロードコードではなく、System.loadLibrary を使用して OpenSSL をロードします。

指定されていない場合、デフォルト値の false が使用されます。

org.apache.catalina.startup. EXIT_ON_INIT_FAILURE

true の場合、サーバーの初期化フェーズ中に例外が発生した場合、サーバーは終了します。この機能をサポートするために、このシステムプロパティは Connector の 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) が使用されます。