システムプロパティ

目次

はじめに

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

プロパティ置換

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

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

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

このブール型のシステムプロパティを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型のオブジェクトに強制変換する場合、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を使用する場合、エラーがINFOではなくDEBUGでログに記録される期間は、システムプロパティorg.apache.juli.logging.UserDataHelper.SUPPRESSION_TIMEによって制御されます。

デフォルト値はINFO_THEN_DEBUGです。

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

  • 無効なCookie。
  • 無効なパラメータ。
  • ヘッダーが多すぎる、パラメータが多すぎる(コネクタ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属性のデフォルト値として使用される、コンマ区切りのファイル名パターンのリスト。

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

tomcat.util.scan.StandardJarScanFilter.jarsToScan

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

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

WebSockets

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