- はじめに
- 属性
- ネストされたコンポーネント
- 標準実装
- APRライフサイクルリスナー - org.apache.catalina.core.AprLifecycleListener
- コンテキストネーミング情報リスナー - org.apache.catalina.core.ContextNamingInfoListener
- グローバルリソースライフサイクルリスナー - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
- JNIライブラリローディングリスナー - org.apache.catalina.core.JniLifecycleListener
- JREメモリリーク防止リスナー - org.apache.catalina.core.JreMemoryLeakPreventionListener
- OpenSSLライフサイクルリスナー - org.apache.catalina.core.OpenSSLLifecycleListener
- プロパティロールマッピングリスナー - org.apache.catalina.core.PropertiesRoleMappingListener
- セキュリティライフサイクルリスナー - org.apache.catalina.security.SecurityListener
- StoreConfigライフサイクルリスナー - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
- ThreadLocalリーク防止リスナー - org.apache.catalina.core.ThreadLocalLeakPreventionListener
- TLS構成リロードリスナー - org.apache.catalina.security.TLSCertificateReloadListener
- UserConfig - org.apache.catalina.startup.UserConfig
- バージョンログライフサイクルリスナー - org.apache.catalina.startup.VersionLoggerListener
- HTTPD mod_heartmonitor リスナー - org.apache.catalina.ha.backend.HeartbeatListener
LifeCycle Listener コンポーネント
目次
はじめに
Listener 要素は、特定のイベント (通常はTomcatの起動時または停止時) が発生したときにアクションを実行するコンポーネントを定義します。
Listenerは、Server、Engine、Host、またはContextの内部にネストできます。一部のListenerは、特定の要素内にのみネストされることを意図しています。これらの制約については、以下のドキュメントに記載されています。
属性
共通属性
Listenerのすべての実装は、次の属性をサポートしています。
属性 | 説明 |
---|---|
className |
使用する実装のJavaクラス名。このクラスは、 |
ネストされたコンポーネント
Listenerの内側に要素をネストすることはできません。
標準実装
ほとんどのCatalinaコンポーネントとは異なり、いくつかの標準的なListener実装が利用可能です。結果として、使用したい実装を選択するには、className
属性を使用する必要があります。
APRライフサイクルリスナー - org.apache.catalina.core.AprLifecycleListener
APRライフサイクルリスナーは、Apache Tomcat Nativeライブラリの存在を確認し、存在する場合はライブラリをロードします。詳細については、APR/nativeガイドを参照してください。
このリスナーは、Server要素内にのみネストする必要があります。
APRライフサイクルリスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
SSLEngine |
使用するSSLEngineの名前。 デフォルト値はonです。これにより、ネイティブSSLエンジンが初期化されます。これは、 サポートされているSSLハードウェアエンジンとメーカーの詳細については、OpenSSL公式Webサイトを参照してください。 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実装の自動選択を制御します。デフォルトは |
コンテキストネーミング情報リスナー - org.apache.catalina.core.ContextNamingInfoListener
コンテキストネーミング情報リスナーは、Contextから次の環境エントリ(java:comp/env
を暗示)を追加します:context/path
、context/encodedPath
、context/webappVersion
、context/name
、context/baseName
、context/displayName
。
このリスナーは、Context要素内にのみネストする必要があります。
コンテキストネーミング情報リスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
emptyOnRoot |
ルートコンテキストの場合、 デフォルト値は |
グローバルリソースライフサイクルリスナー - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
JNIライブラリローディングリスナー - org.apache.catalina.core.JniLifecycleListener
JNIライブラリローディングリスナーを使用すると、共有クラスローダー(通常はCommonクラスローダーですが、構成によっては異なる場合があります)を使用してネイティブライブラリをロードすることにより、複数のWebアプリケーションがネイティブライブラリを使用できるようになります。
リスナーは、相互に排他的な2つの属性をサポートしているため、そのうちの1つを使用する必要がありますが、両方を一緒に使用することはできません。
属性 | 説明 |
---|---|
libraryName |
|
libraryPath |
|
JREメモリリーク防止リスナー - org.apache.catalina.core.JreMemoryLeakPreventionListener
JREメモリリーク防止リスナーは、Javaランタイム環境がコンテキストクラスローダーを使用してシングルトンをロードする既知の場所に対する回避策を提供します。これは、Webアプリケーションクラスローダーがその時点でコンテキストクラスローダーである場合、メモリリークを引き起こすためです。回避策は、このリスナーが起動するときにこれらのシングルトンを初期化することです。Tomcatの共通クラスローダーはその時点でコンテキストクラスローダーであるためです。また、ロックされたJARファイルを引き起こす可能性のある既知の問題に対する回避策も提供します。
このリスナーは、Server要素内にのみネストする必要があります。
JREメモリリーク防止リスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
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ライフサイクルリスナー - org.apache.catalina.core.OpenSSLLifecycleListener
OpenSSLライフサイクルリスナーは、OpenSSLライブラリの存在を確認し、存在する場合はライブラリをロードします。これは、追加のネイティブコードの代わりに、Java 22のFFM APIを使用します。有効にして正常にロードされると、NIOおよびNIO2コネクタはTLS機能にOpenSSLを使用するようになります。これは、上記で説明したAPRライフサイクルリスナーの機能的な代替品です。
このリスナーは、Server要素内にのみネストする必要があります。
OpenSSLライフサイクルリスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
SSLEngine |
OpenSSL 1.xで使用するSSLEngineの名前。 サポートされているSSLハードウェアエンジンとメーカーの詳細については、OpenSSL公式Webサイトを参照してください。 |
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実装の自動選択を制御します。デフォルトは |
プロパティロールマッピングリスナー - org.apache.catalina.core.PropertiesRoleMappingListener
プロパティロールマッピングリスナーは、プロパティファイルからコンテキストのロールマッピングを設定します。キーはアプリケーションロール (例: admin、user、uservisorなど) を表し、値は技術ロール (例: DN、SID、UUIDなど) を表します。たとえば、プロパティファイルに一般的なアプリケーション構成も含まれている場合、キーにプレフィックスを付けることもできます: app-roles.
。
このリスナーは、Context要素内にのみネストする必要があります。
プロパティロールマッピングリスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
roleMappingFile |
ロールマッピングプロパティファイルへのパス。プロトコル デフォルト値は |
keyPrefix |
プロパティキーからフィルタリングするプレフィックス。プレフィックスを持たない他のすべてのキーは無視されます。 |
セキュリティライフサイクルリスナー - org.apache.catalina.security.SecurityListener
セキュリティライフサイクルリスナーは、Tomcatの起動時に多くのセキュリティチェックを実行し、失敗した場合はTomcatが起動しないようにします。リスナーはデフォルトでは有効になっていません。有効にするには、$CATALINA_BASE/conf/server.xmlのリスナーのコメントを解除します。
このリスナーは、Server要素内にのみネストする必要があります。
セキュリティライフサイクルリスナーでは、次の追加属性がサポートされています。
属性 | 説明 |
---|---|
checkedOsUsers |
Tomcatの起動に使用してはならないOSユーザーのコンマ区切りリスト。指定しない場合、rootのデフォルト値が使用されます。このチェックを無効にするには、属性を空の文字列に設定します。ユーザー名は、大文字と小文字を区別しない方法でチェックされます。 |
minimumUmask |
Tomcatが起動する前に構成する必要がある、最も制限の少ないumask。指定しない場合、0007のデフォルト値が使用されます。このチェックを無効にするには、属性を空の文字列に設定します。チェックは、Windowsプラットフォームでは実行されません。 |
buildDateWarningAgeDays |
このTomcatインスタンスのビルド日から起動日までの最大日数で、警告がログに記録されるまでの日数を設定します。このチェックを無効にするには、0未満(例:-1)に設定します。指定しない場合、デフォルト値の-1が使用されます。 |
StoreConfigライフサイクルリスナー - org.apache.catalina.storeconfig.StoreConfigLifecycleListener
StoreConfig Lifecycle Listenerは、server.xmlで現在のサーバー構成を保存したり、context.xmlファイルでWebアプリケーションの現在の構成を保存するために使用できるStoreConfig MBeanを構成します。
このリスナーは、Server要素内にのみネストする必要があります。
StoreConfig Lifecycle Listenerは、以下の追加属性をサポートしています。
属性 | 説明 |
---|---|
storeConfigClass |
使用する |
storeRegistry |
|
ThreadLocalリーク防止リスナー - org.apache.catalina.core.ThreadLocalLeakPreventionListener
ThreadLocal Leak Prevention Listenerは、スレッドローカルに関連するメモリリークを回避するために、Executorプール内のスレッドを、Contextが停止されるときに更新するようトリガーします。アクティブなスレッドは、タスクの実行後にプールに戻るときに1つずつ更新されます。更新は、renewThreadsWhenStoppingContext
属性がtrue
に設定されているコンテキストに対してのみ行われます。
このリスナーは、Server要素内にのみネストする必要があります。
ThreadLocal Leak Prevention Listenerは、追加の属性をサポートしていません。
TLS構成リロードリスナー - org.apache.catalina.security.TLSCertificateReloadListener
このリスナーは、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属性によって管理されます。 |
バージョンログライフサイクルリスナー - org.apache.catalina.startup.VersionLoggerListener
Version Logging Lifecycle Listenerは、Tomcatの起動時にTomcat、Java、およびオペレーティングシステムの情報をログに記録します。
このリスナーは、Server要素内でのみネストする必要があり、最初に定義されたリスナーである必要があります。
Version Logging Lifecycle Listenerは、以下の追加属性をサポートしています。
属性 | 説明 |
---|---|
logArgs |
|
logEnv |
|
logProps |
|
HTTPD mod_heartmonitor リスナー - 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です。 |