- イントロダクション
- 属性
- ネストされたコンポーネント
- 標準実装
- APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener
- Context Naming Info Listener - org.apache.catalina.core.ContextNamingInfoListener
- Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
- JNI Library Loading Listener - org.apache.catalina.core.JniLifecycleListener
- JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener
- OpenSSL Lifecycle Listener - org.apache.catalina.core.OpenSSLLifecycleListener
- Properties Role Mapping Listener - org.apache.catalina.core.PropertiesRoleMappingListener
- Security Lifecycle Listener - org.apache.catalina.security.SecurityListener
- StoreConfig Lifecycle Listener - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
- ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener
- TLS 構成リロードリスナー - org.apache.catalina.security.TLSCertificateReloadListener
- UserConfig - org.apache.catalina.startup.UserConfig
- Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener
- HTTPD mod_heartmonitor Listener - org.apache.catalina.ha.backend.HeartbeatListener
LifeCycle Listener コンポーネント
目次
イントロダクション
Listener 要素は、特定のイベントが発生したときにアクションを実行するコンポーネントを定義します。通常はTomcatの起動またはTomcatの停止です。
Listenerは、Server、Engine、Host、またはContext内にネストすることができます。一部のListenerは、特定の要素内にネストすることのみを意図しています。これらの制約については、以下のドキュメントに記載されています。
属性
共通属性
Listener のすべての実装は、次の属性をサポートします。
属性 | 説明 |
---|---|
className |
使用する実装の Java クラス名。このクラスは、 |
ネストされたコンポーネント
Listener の内部に要素をネストすることはできません。
標準実装
ほとんどの Catalina コンポーネントとは異なり、いくつかの標準的な Listener 実装が利用可能です。したがって、使用する実装を選択するには、className
属性を必ず使用する必要があります。
APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener
APR Lifecycle Listener は、Apache Tomcat Native ライブラリの存在を確認し、存在する場合はライブラリをロードします。詳細については、APR/native ガイドを参照してください。
このリスナーは、Server 要素内にのみネストする必要があります。
APR Lifecycle Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
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 を FIPS モードにするように要求するには OpenSSL 3.x の場合: FIPS モードではFIPS 対応の OpenSSL ライブラリが必要です。この属性が デフォルト値は |
useOpenSSL |
この属性は、OpenSSL JSSE 実装の自動選択を制御します。デフォルトは |
Context Naming Info Listener - org.apache.catalina.core.ContextNamingInfoListener
Context Naming Info Listener は、Context から次の環境エントリ (java:comp/env
は暗黙) を追加します: context/path
, context/encodedPath
, context/webappVersion
, context/name
, context/baseName
, context/displayName
。
このリスナーは、Context 要素内にのみネストする必要があります。
Context Naming Info Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
emptyOnRoot |
ルートコンテキストの場合、 デフォルト値は |
Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
Global Resources Lifecycle Listener は、Global Resources 要素の一部として、server.xml で定義された Global JNDI リソースを初期化します。このリスナーがないと、グローバルリソースは利用できません。
このリスナーは、Server 要素内にのみネストする必要があります。
Global Resources Lifecycle Listener は、追加の属性をサポートしていません。
JNI Library Loading Listener - org.apache.catalina.core.JniLifecycleListener
JNI Library Loading Listener を使用すると、共有クラスローダー (通常は共通クラスローダーですが、構成によっては異なる場合があります) を使用してネイティブライブラリをロードすることで、複数の Webapps がネイティブライブラリを使用できるようになります。
リスナーは相互に排他的な2つの属性をサポートしているため、どちらか一方を使用する必要がありますが、両方を一緒に使用することはできません。
属性 | 説明 |
---|---|
libraryName |
|
libraryPath |
|
JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener
JRE Memory Leak Prevention Listener は、Java Runtime 環境がコンテキストクラスローダーを使用してシングルトンをロードする既知の箇所に対する回避策を提供します。これは、Webアプリケーションクラスローダーがその時点でのコンテキストクラスローダーである場合、メモリリークの原因となるためです。回避策は、このリスナーが起動するときにこれらのシングルトンを初期化することです。これは、Tomcatの共通クラスローダーがその時点でのコンテキストクラスローダーであるためです。また、ロックされたJARファイルにつながる既知の問題に対する回避策も提供します。
このリスナーは、Server 要素内にのみネストする必要があります。
JRE Memory Leak Prevention Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
appContextProtection |
Webアプリケーションによってトリガーされた |
classesToInitialize |
このリスナーの起動時にロードして初期化する、カンマ区切りの完全修飾クラス名のリスト。これにより、リクエスト処理中にロードされた場合にクラスローダーリークを引き起こすことがわかっているクラスを事前にロードできます。 |
driverManagerProtection |
|
initSeedGenerator |
デフォルトのセキュリティ spi 実装の内部クラスである |
urlCacheProtection |
|
JreMemoryLeakPreventionListener の例
以下は、このリスナーの classesToInitialize
属性を構成する方法の例です。
このリスナーが server.xml で次のように構成されている場合
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
classesToInitialize="oracle.jdbc.driver.OracleTimeoutThreadPerVM" />
次に、OracleTimeoutThreadPerVM
クラスは、リクエスト処理中ではなく、リスナーの起動中にロードおよび初期化されます。
OpenSSL Lifecycle Listener - org.apache.catalina.core.OpenSSLLifecycleListener
OpenSSL Lifecycle Listener は、OpenSSL ライブラリの存在を確認し、存在する場合はライブラリをロードします。 これは、追加のネイティブコードの代わりに Java 22 からの FFM API を使用します。 有効になり、正常にロードされると、NIO および NIO2 コネクタは TLS 機能に OpenSSL を使用します。 これは、上記の APR Lifecycle Listener の機能的な代替です。
このリスナーは、Server 要素内にのみネストする必要があります。
OpenSSL Lifecycle Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
SSLEngine |
OpenSSL 1.x で使用する SSLEngine の名前。 サポートされている SSL ハードウェアエンジンとメーカーの詳細については、OpenSSL 公式ウェブサイトを参照してください。 |
SSLRandomSeed |
SSLEngine の PRNG のシードに使用されるエントロピーソース。デフォルト値は |
FIPSMode |
この属性の動作は、Tomcat Native が OpenSSL 1.x または OpenSSL 3.x に対してコンパイルされているかどうかによって異なります。 OpenSSL 1.x の場合: OpenSSL を FIPS モードにするように要求するには OpenSSL 3.x の場合: FIPS モードではFIPS 対応の OpenSSL ライブラリが必要です。この属性が デフォルト値は |
useOpenSSL |
この属性は、OpenSSL JSSE 実装の自動選択を制御します。 デフォルトは |
Properties Role Mapping Listener - org.apache.catalina.core.PropertiesRoleMappingListener
Properties Role Mapping Listener は、プロパティファイルからコンテキストのロールマッピングを設定します。キーはアプリケーションロール(例:admin、user、uservisorなど)を表し、値は技術ロール(例:DN、SID、UUIDなど)を表します。キーには、プロパティファイルに一般的なアプリケーション構成も含まれている場合、app-roles.
などのプレフィックスを付けることもできます。
このリスナーは、Context 要素内にのみネストする必要があります。
Properties Role Mapping Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
roleMappingFile |
ロールマッピングプロパティファイルへのパス。プロトコル デフォルト値は |
keyPrefix |
プロパティキーからフィルタリングするプレフィックス。プレフィックスを持たない他のすべてのキーは無視されます。 |
Security Lifecycle Listener - org.apache.catalina.security.SecurityListener
Security Lifecycle Listener は、Tomcat の起動時にいくつかのセキュリティチェックを実行し、失敗した場合は Tomcat の起動を防止します。 このリスナーはデフォルトでは有効になっていません。 有効にするには、$CATALINA_BASE/conf/server.xml でリスナーのコメントを解除します。
このリスナーは、Server 要素内にのみネストする必要があります。
Security Lifecycle Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
checkedOsUsers |
Tomcat の起動に使用してはならない OS ユーザーのカンマ区切りリスト。指定しない場合、root のデフォルト値が使用されます。 このチェックを無効にするには、属性を空の文字列に設定します。 ユーザー名は、大文字と小文字を区別しない方法でチェックされます。 |
minimumUmask |
Tomcat を起動する前に構成する必要がある最小の制限付き umask。指定しない場合、0007 のデフォルト値が使用されます。 このチェックを無効にするには、属性を空の文字列に設定します。 チェックは Windows プラットフォームでは実行されません。 |
buildDateWarningAgeDays |
この Tomcat インスタンスのビルド日とその起動日の間の日数で、警告がログに記録されるまでに許容される最大日数。このチェックを無効にするには、0 未満(例:-1)に設定します。指定しない場合、-1 のデフォルト値が使用されます。 |
StoreConfig Lifecycle Listener - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
StoreConfig Lifecycle Listener は、server.xml で現在のサーバー構成を保存するか、context.xml ファイルで Web アプリケーションの現在の構成を保存するために使用できる StoreConfig MBean を構成します。
このリスナーは、Server 要素内にのみネストする必要があります。
StoreConfig Lifecycle Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
storeConfigClass |
使用する |
storeRegistry |
|
ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener
ThreadLocal Leak Prevention Listener は、Context が停止しているときに、スレッドローカル関連のメモリリークを回避するために、Executor プールのスレッドの更新をトリガーします。 アクティブなスレッドは、タスクの実行後にプールに戻るときに、1つずつ更新されます。 更新は、renewThreadsWhenStoppingContext
属性が true
に設定されているコンテキストに対してのみ行われます。
このリスナーは、Server 要素内にのみネストする必要があります。
ThreadLocal Leak Prevention Listener は、追加の属性をサポートしていません。
TLS 構成リロードリスナー - org.apache.catalina.security.TLSCertificateReloadListener
このリスナーは、TLS 証明書の有効期限を監視し、TLS 証明書の有効期限が切れる数日前に TLS 構成の自動再読み込みをトリガーするために使用できます。
このリスナーは、TLS 証明書を定期的に更新し、現在の証明書を新しい証明書に置き換える他のプロセス(certbot、クラウドインフラストラクチャなど)があることを前提としています。
このリスナーは、server.xml から Tomcat 構成を再度読み込みません。 server.xml に変更を加えた場合は、Tomcat プロセスを再起動して変更を反映させる必要があります。
このリスナーは、Server 要素内にのみネストする必要があります。
属性 | 説明 |
---|---|
checkPeriod |
再読み込みチェックの間隔(秒単位)。 |
daysBefore |
新しい証明書が所定の位置にあり、再読み込みをトリガーできると予想される、TLS 証明書の有効期限が切れるまでの日数。 指定しない場合、デフォルトの 14 日が使用されます。 |
UserConfig - org.apache.catalina.startup.UserConfig
UserConfig は、ユーザー Web アプリケーションの機能を提供します。 ユーザー Web アプリケーションは、チルダ文字("〜")とユーザー名で始まるリクエスト URI を、サーバー上のそのユーザーのホームディレクトリにあるディレクトリ(通常は public_html という名前)にマップします。
詳細については、Host 要素のユーザー Web アプリケーションの特殊機能を参照してください。
UserConfig は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
directoryName |
各ユーザーのホームディレクトリ内で検索されるディレクトリ名。デフォルトは |
userClass |
ユーザーデータベースクラスのクラス名。 現在、2つのユーザーデータベースがあります。 |
homeBase |
ユーザーのホームディレクトリを含むベースディレクトリ。 これは、 |
allow |
デプロイが許可されているユーザーを定義する正規表現。 この属性が指定されている場合、デプロイするユーザーはこのパターンに一致する必要があります。 この属性が指定されていない場合、ユーザーが拒否パターンに一致しない限り、すべてのユーザーがデプロイされます。 |
deny |
デプロイが拒否されているユーザーを定義する正規表現。 この属性が指定されている場合、デプロイするユーザーはこのパターンに一致してはなりません。 この属性が指定されていない場合、ユーザーのデプロイは allow 属性によって管理されます。 |
Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener
Version Logging Lifecycle Listener は、Tomcat の起動時に Tomcat、Java、およびオペレーティングシステムの情報をログに記録します。
このリスナーは、Server 要素内にのみネストする必要があり、最初に定義されたリスナーである必要があります。
Version Logging Lifecycle Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
logArgs |
|
logEnv |
|
logProps |
|
HTTPD mod_heartmonitor Listener - org.apache.catalina.ha.backend.HeartbeatListener
HTTPD mod_heartmonitor Listener を使用すると、Tomcat は Apache HTTPD mod_heartmonitor モジュールにハートビートメッセージを送信できます。
HTTPD mod_heartmonitor Listener は、次の追加属性をサポートします。
属性 | 説明 |
---|---|
Port |
HTTPDからプロキシされたトラフィックを受信するコネクタのポート。デフォルトでは、最初のコネクタが使用されます |
Host |
Host は、プロキシされたトラフィックを受信するコネクタの address に対応する IP です。デフォルトでは空で、Port が使用されます |
proxyURL |
proxyURL は、ハートビートハンドラーの httpd 構成の Location に対応する 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 です |