変更履歴
Tomcat 11.0.8 (markt)
Catalina
`java:comp`ネームスペースをミラーリングする`java:module`ネームスペースのサポートを追加。(markt)
69690: マッピングされたサーブレットに`@MultipartConfig`または同等の設定がない場合、`multipart/form-data`コンテンツタイプの要求に対して`HttpServletRequest.getParameter()`および関連メソッドを呼び出しても例外がトリガーされないようにします。なお、この状況で`getPart()`または`getParts()`を呼び出すと例外がトリガーされます。(markt)
単一のURLセグメント内で`;`で区切られた複数のパスパラメータのパースをサポート。Chenjpによるプルリクエスト #860 に基づく。(markt)
69699: リライトバルブで使用されるリダイレクトURLを、適切であればセッションIDでエンコードし、リライト使用時に異なるセッション設定を持つクロスコンテキストを処理します。(remm)
#863: Apache httpdの動作に合わせるため、テキストリライトマップファイルの行末コメントのサポートを追加。Chenjpによるプルリクエスト。(markt)
69706: 無限セッションタイムアウトを許可した際に発生した、FORMにおける保存済みリクエストのシリアライズの問題を修正。(remm)
Webアプリケーション内のパスにマウントされたPre-ResourcesおよびPost-Resourcesのパスチェックを拡張。(markt)
Coyote
#861: `TaskQueue`をリファクタリングし、独自の`BlockingQueue`実装を提供するカスタム`Executor`とのより良い統合を可能にする新しいインターフェース`RetryableQueue`を使用するように変更。Paulo Almeidaによるプルリクエスト。(markt)
`Connector`要素に2つの新しい属性を追加することで、マルチパートリクエスト処理のよりきめ細かい制御を提供します。`maxPartCount`はマルチパートリクエストの総パート数を制限し、`maxPartHeaderSize`は各パートに提供されるヘッダーのサイズを制限します。これらの新しい属性のサポートを`ParameterLimitValve`に追加。(markt)
Jasper
69696: コンパイル失敗後、JSPラッパーをリロード対象としてマーク。(remm)
Webアプリケーション
69694: マネージャーWebアプリケーションを使用して行われたデプロイメントタスクにおいて、コピー操作が失敗した場合のエラー報告を改善。(remm)
その他
`webappClassLoader.stackTraceRequestThread`メッセージにスレッド名を追加。Felix Zhangによるパッチ。(schultz)
Tomcat Nativeを2.0.9に更新。(markt)
Apache Commons FileUploadの内部フォークを1.6.0-RC1 (2025-06-05) に更新。(markt)
EasyMockを5.6.0に更新。(markt)
Checkstyleを10.25.0に更新。(markt)
Windows用インストーラがファイル権限を設定するために`icacls.exe`を呼び出す際、フルパスを使用するように変更。(markt)
tak7iji氏による日本語翻訳の改善。(markt)
2025-05-13 Tomcat 11.0.7 (markt)
Catalina
リライトバルブで、パスパラメータのリライト生成を処理します。(remm)
69588: `PreResources`、`JarResources`、`PostResources`で`allowLinking`を設定できるようにします。明示的に設定されていない場合、設定は`Resources`から継承されます。(markt)
69633: コンテキストルートマッピングを使用するFilterのサポートを追加。(markt)
69643: 大量のファイルのディレクトリリスト表示を最適化。Loic de l'Eprevier氏によるパッチ。(remm)
#843: 部分的なPUTレンジおよび関連するテストケースのオフバイワン検証ロジックを修正。Chenjp氏による提出。(remm)
GCIサーブレットをリファクタリングし、`WebResource` API経由でリソースにアクセスするように変更。(markt)
69662: 名前ルックアップの失敗が発生した場合、例外メッセージに名前を報告。Donald Smith氏による提出コードに基づく。(remm)
認証開始時にセッションに無限タイムアウトが設定されている場合でも、FORM認証属性`authenticationSessionTimeout`が正しく機能するようにします。(markt)
WebアプリケーションのリソースがURL経由でアクセスされた場合、ファイル拡張子に基づいたコンテンツタイプを提供。(markt)
Jasper
69635: `jakarta.el.ImportHandler`に内部クラス解決のサポートを追加。(markt)
#842: JSPサーブレットパラメータ`useNonstandardTagOptimizations`を介して有効化された場合、`c:set`および`c:remove`タグの最適化された実行のサポートを追加。(jengebr)
69635のテストケースによって露呈した、大文字と小文字を区別しないファイルシステム上のJSPおよびタグファイルの端的なコンパイルバグを修正。(markt)
Webアプリケーション
68876: ドキュメント。PlantUMLを使用してサーバー起動、リクエスト処理、認証のUML図を更新し、各図のソースファイルを含める。(markt)
その他
Jacocoを0.8.13に更新。(remm)
Javadocに使用するロケールを明示的に設定。公式リリースでは、再現可能なビルドをサポートするため、このロケールは英語(米国)になります。(schultz)
Byte Buddyを1.17.5に更新。(markt)
Checkstyleを10.23.1に更新。(markt)
ファイル拡張子とメディアタイプのマッピングを、Apache Webサーバー (httpd) で使用されている現在のリストに合わせるように更新。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2025-04-09 Tomcat 11.0.6 (markt)
Catalina
69602: 2024年12月以降のリリースで厳しすぎた結果、`If-Range`ヘッダー内の弱いETagを400応答で拒否していた回帰を修正。`If-Range`には強いETagが必要なため、代わりに失敗した一致として扱います。(remm)
部分的なPUTで送信されたコンテンツ量が指定された範囲と一致しない場合、400を返します。(remm)
`org.apache.catalina.filters.RateLimitFilter`で使用できる新しい`RateLimiter`実装`org.apache.catalina.util.ExactRateLimiter`を追加し、設定された正確な値に基づいたレート制限を提供できるようにします。Chenjpによるプルリクエスト #794 に基づく。(markt)
`ExtendedAccessLogValve`における`time-taken`トークンのパースを修正。(remm)
SSLエンジンとFIPSモードを設定するためのFFM OpenSSLコードの呼び出しを修正。(remm)
69600: `RemoteIpFilter`および`RemoteIpValve`のデフォルト内部プロキシにIPv6ローカルアドレス (RFC 4193およびRFC 4291) を追加。(markt)
69615: カスタムWebアプリケーションクラスローダーを使用している、またはリフレクションを使用して外部リポジトリをWebアプリケーションクラスローダーに動的に追加しているユーザー向けに、見つからないクラスリソースキャッシュとの統合を改善。(markt)
デフォルトサーブレットに新しい初期化パラメータ`allowPostAsGet`を追加しました。これは、POSTメソッドを使用した静的リソースへの直接リクエスト(フォワードやインクルードではない)がGETメソッドを使用した場合と同様に処理されるかどうかを制御します。許可されていない場合、リクエストは拒否されます。GETメソッドが使用されたかのようにリクエストを処理するというデフォルトの動作は変更されていません。(markt)
69623: リソースキャッシュが有効なWebアプリケーション内から`ClassLoader.getResource().getContent()`が呼び出された場合に失敗するという、長年にわたる回帰を修正。(markt)
69634: `JsonErrorReportValve`でのNPEを回避。(remm)
`ErrorReportValve`のものと同等の、不足していた`throwable`スタックトレースを`JsonErrorReportValve`に追加。(remm)
セキュリティマネージャーのサポート削除後、`ErrorReportValve`でのスタックトレーストミングを修正。(remm)
`RewriteValve`における`%nn` URLエンコーディングの処理を改善し、`%nn` URLエンコーディングがリライトルールでどのように使用できるかを文書化。(markt)
`WebappClassLoaderBase.getResource("")`を呼び出した際の潜在的な例外を修正。(markt)
Coyote
69607: MD5の初期化失敗を許可。Shivam Verma氏による提出コードに基づく。(remm)
69614: 不正な優先度フィールド値を持つHTTP/2優先度フレームは無視されるべきです。(markt)
HTTP/2処理中の予期せぬエラーの処理を改善。(markt)
HTTPS対応コネクタでカスタム`SSLContext`を使用するプロセスを簡素化。Hakky54によるプルリクエスト #805 に基づく。(markt)
Jasper
JSPランタイムライブラリによって提供されていたカスタムURLエンコーディングを`java.net.URLEncoder.encode()`の呼び出しに置き換え。(markt)
展開されたWebアプリケーションをサポートする、`Java Compiler` APIを使用したコンパイラを追加。使用する`compilerClassName`は`org.apache.jasper.compiler.JavaCompiler`です。(remm)
JSPコンパイルのコンパイラソースおよび/またはコンパイラターゲットとしてJava 25 (値`25`) を指定するサポートを追加。これらの値をサポートしないEclipse JDTコンパイラのバージョンで使用された場合、警告がログに記録され、デフォルトが使用されます。(markt)
クラスター
`ReplicationValve`におけるクロスコンテキストセッションのリセットを修正。(remm)
Webアプリケーション
ドキュメント。Tomcatの内部ロギングにJULIではなくLog4jを使用する方法を説明するLog4jドキュメントへのリンクを追加。(markt)
ドキュメント。リクエストまたはサーブレットコンテキストを介してWebアプリケーションが利用できるランタイム属性を文書化。usmazatによるプルリクエスト #832 に基づく。(markt)
その他
ファイルロックの問題を回避するため、JSignを6.0に戻します。(markt)
Eclipse JDT compiler 4.35に更新。(markt)
NSIS 3.11に更新。(markt)
ByteBuddy 1.17.4に更新。(markt)
Checkstyle 10.21.4に更新。(markt)
SpotBugsを4.9.3に更新。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2025-03-05 Tomcat 11.0.5 (markt)
Catalina
リソース名でクラスローダーリソースをルックアップする際、リソース名は'/'で始まってはいけません。リソース名が'/'で始まる場合、Tomcatは寛容に'/'が存在しないかのようにルックアップします。Webアプリケーションクラスローダーが外部リポジトリで設定され、'/'で始まる名前がルックアップに使用された場合、キャッシュされた「見つからない」結果が、正しいリソース名を使用したルックアップ結果を効果的に隠してしまう可能性がありました。(markt)
レルムがGSSAPI認証を使用するように設定されている場合、`JNDIRealm`が`HttpServletRequest.login(String username, String password)`に提供される資格情報を検証できるようにします。(markt)
CVE-2024-56337への露出と保護のためのチェックを改善し、必要でない限りリフレクションが使用されないようにします。ファイルシステムが大文字と小文字を区別するかどうかのチェックは削除されました。(markt)
JRE互換性検出のバグを修正。Java 19およびJava 20がJava 21の機能をサポートしていると誤って識別されていた問題。(markt)
`AccessLogValve`および`ExtendedAccessLogValve`で、接続ID (`ServletRequest.getServletConnection().getConnectionId()`によって返される) をログに記録するサポートを追加。Dmoleによるプルリクエスト #814 に基づく。(markt)
部分的なPUTで使用される一時ファイルが削除されないシナリオを回避。(remm)
Coyote
69575: 応答がすでに`compress`、`deflate`、または`zstd`を使用して圧縮されている場合、圧縮を使用しないようにします。(remm)
クライアントが`gzip`を含む`TE`ヘッダーを送信した場合、`Content-Encoding`ではなく`Transfer-Encoding`を圧縮に使用します。(remm)
HTTP/2ストリームリセットの処理における競合状態を修正。予期せぬ500応答を引き起こす可能性がありました。(markt)
クラスター
69598: `KubernetesMembershipProvider`実装にサービスアカウントトークン変更の検出を追加し、変更された場合にトークンを再ロードします。Miroslav Jezbera氏によるパッチに基づく。(markt)
その他
Windows以外のプラットフォームでWindows用インストーラをビルドする際のオプションとして`makensis`を追加。(rjung/markt)
Byte Buddyを1.17.1に更新。(markt)
Checkstyleを10.21.3に更新。(markt)
SpotBugsを4.9.1に更新。(markt)
JSignを7.1に更新。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2025-02-17 Tomcat 11.0.4 (markt)
Catalina
69576: CVE-2024-56337のチェックのために導入された捕捉されない例外により、`JreCompat`の初期化が失敗する可能性を回避。(remm)
その他
ログを1行のJSONドキュメントとしてフォーマットするための`org.apache.juli.JsonFormatter`を追加。(remm)
2025-02-10 Tomcat 11.0.3 (markt)
Catalina
WebDAVサーブレットで使用される可能性がある`DataSourcePropertyStore`の`tableName`設定を更新。(remm)
RFC 9110に従ってHTTP Ifヘッダーの処理を改善。Chenjpによるプルリクエスト #796 に基づく。(remm/markt)
`Resources`要素での`readOnly`属性設定を許可し、メインリソースの`readOnly`属性値を設定できるようにします。この属性値は、デフォルトサーブレットおよびWebDAVサーブレットでも使用されます。(remm)
69285: インクルードされたリクエストのパラメータマップ作成を最適化。John Engebretson氏によるサンプルコードとテストケースに基づく。(markt)
69527: キャッシュされたリソースがコンテンツ長0に設定されたり、即座に削除されたりする稀なケースを回避。(remm)
WebDAV LOCKおよびPROPFINDのリクエストボディなし検出における潜在的なエッジケース(HTTP/1.0など)を修正。(remm)
69528: `Resources`の`bloom` `archiveIndexStrategy`にマルチリリースJARサポートを追加。(remm)
WebDAVサーブレットにおける`WEB-INF`および`META-INF`のチェックを改善。Chenjp氏による提出パッチに基づく。(remm)
`CrawlerSessionManagerValve`から未使用のセッション・ツー・クライアントマップを削除。Brian Matzon氏による提出。(remm)
1つ以上のWebアプリケーションがCVE-2024-56337に対して脆弱である可能性がある場合、JVMが脆弱性から保護するように設定されていることを確認し、設定されていない場合はJVMを正しく設定するためのチェックを追加します。1つ以上のWebアプリケーションがCVE-2024-56337に対して脆弱である可能性があり、JVMが正しく設定できない場合、またはJVMが正しく設定されていることを確認できない場合、影響を受けるWebアプリケーションの起動を防止します。(markt)
WebDAVサーブレットを`serveSubpathOnly`が`true`に設定された状態で使用する場合、要求されたWebDAV操作の宛先もサブパスに制限されるようにします。(markt)
デフォルトサーブレットが`DELETE`リクエストに対してターゲットリソースを削除できないために405 (method not allowed) 応答を返す場合、適切な`Allow` HTTPヘッダーを生成します。Chenjpによるプルリクエスト #802。(markt)
`RequestDispatcher`インスタンスの作成をリファクタリングし、提供されたパスの処理が通常のリクエスト処理と一貫性を持つように変更。(markt)
`RequestDispatcher`の作成に使用されるパスの処理を制御するため、Contextに`encodedReverseSolidusHandling`と`encodedSolidusHandling`属性を追加。(markt)
非同期処理中にコンテナ外のスレッドで`IOException`が発生した後の潜在的な`NullPointerException`を処理。(markt)
部分的なPUTで使用される一時ファイルのライフサイクルを強化。(remm)
新しい`ParameterLimitValve`を介して、HTTPリクエストのパラメータ数を制限するサポートを追加しました。このバルブは、URL固有のパラメータ数の制限を構成可能にします。(dsoumis)
Coyote
Tomcatがサポートしない登録済みHTTP/2設定に対する警告をログに記録しないようにします。これらの設定は現在、静かに無視されます。(markt)
`Http11InputBuffer`をリサイクルする際の稀な`NullPointerException`を回避。(markt)
NIOコネクタのポーライベント処理時に無効なソケットチャネルをログに記録する際のログレベルをデバッグに下げます。これは通常の利用状況で発生する可能性があるためです。(markt)
`SavedRequestInputFilter`をリファクタリングし、バッファリングされたデータがコピーされるのではなく直接使用されるように変更。(markt)
`org.apache.catalina.connector.InputBuffer`の未使用バッファを、静的なゼロ長バッファに置き換え。(markt)
リクエスト処理が完了したらHTTP/2ストリームへの参照をクリーンアップし、GCを助け、HTTP/2リサイクルリクエストおよび応答キャッシュのサイズを削減。(markt)
URL内の`%5c`シーケンスの処理方法を制御するための新しいコネクタ設定属性`encodedReverseSolidusHandling`を追加。デフォルトの動作は変更されていません(デコード)。**allowBackslash**属性がデコードされたURIの処理方法を決定することに注意してください。(markt)
69545: `ChunkedInputFilter`の`available`メソッドにおけるCRLFスキップを改善。(remm)
`getHeader()`への繰り返し呼び出しのパフォーマンスを改善。Adwait Kumar Singhによるプルリクエスト #813。(markt)
69559: `sun.misc.Unsafe::invokeCleaner`の使用に関するJava 24の警告が、コードが実際に使用されるときにのみJREによって報告されるようにします。(markt)
Jasper
69508: ページ属性とボディの両方にパラメータが含まれている場合にJSPインクルードアクションを破損させた69382の修正における回帰を修正。Chenjpによるプルリクエスト #803。(markt)
Java 9以降、`_`もJavaキーワードであり、識別子として使用できないことを反映するため、Expression Languageパーサーの識別子検証を更新。(markt)
69521: ELパーサーを更新し、Java言語仕様で定義されているEL識別子に有効な文字の全範囲を許可するように変更。(markt)
69532: `ExpressionFactory`インスタンスの作成を最適化。John Engebretson氏によるパッチ。(markt)
Webアプリケーション
ドキュメント。`mapperContextRootRedirectEnabled`および/または`mapperDirectoryRedirectEnabled`を`true`に設定した場合のセキュリティ上の影響に関する説明を拡張。(markt)
ドキュメント。`SSLHostConfig`要素の`truststoreProvider`属性のデフォルトについて、より適切に文書化。(markt)
その他
Commons Daemon 1.4.1に更新。(markt)
Jakarta EE用Tomcat移行ツールのパッケージバージョンを1.0.9に更新。(markt)
Commons Poolの内部フォークを2.12.1に更新。(markt)
Byte Buddyを1.16.1に更新。(markt)
UnboundIDを7.0.2に更新。(markt)
Checkstyleを10.21.2に更新。(markt)
SpotBugsを4.9.0に更新。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
leeyazhou氏による中国語翻訳の改善。(markt)
2024-12-09 Tomcat 11.0.2 (markt)
Catalina
DefaultServletと同様に、WebDAVサーブレットでサブパスからのみリソースを提供するオプションを追加。(michaelo)
`storeconfig`において`SSLHostConfig`の`protocols`属性に特殊な処理を追加。(remm)
69442: リクエストパラメータのパース時における`content-type`の大文字と小文字の区別チェックを修正。(remm)
`content-type`からメディアタイプとサブタイプを抽出するための重複コードを単一のメソッドにリファクタリング。(markt)
コンストラクタまたはプロパティ関連メソッドがチェック例外をスローするコンポーネントとの生成された埋め込みコードの互換性。(remm)
同時読み書き中のリソースメタデータの一貫性に関する以前の修正は不完全でした。(markt)
#780: `content-range`ヘッダーの長さを修正。Chenjp氏による提出。(remm)
69444: アプリケーション定義のエラーページが呼び出された際に、`jakarta.servlet.error.message`リクエスト属性が設定されるようにします。(markt)
ステータスサーブレットによって生成されるJSON内の数値に引用符が付かないようにします。(remm)
WebDAVおよびデフォルトサーブレットに強力なETagサポートを追加しました。これは`useStrongETags`初期化パラメータの値を`true`に設定することで有効にできます。生成されるETagはリソースコンテンツのSHA-1チェックサムになります。(remm)
ディレクトリリスト表示にクライアントのロケールを使用。(remm)
69439: `ExpiresFilter`における複数の`Cache-Control`ヘッダーの処理を改善。Chenjpによるプルリクエスト #777 に基づく。(markt)
69447: Webアプリケーションクラスローダーが見つけられないクラスをキャッシュするサポートを更新し、外部リポジトリからロードされたクラスを考慮するように変更。この修正以前は、これらのクラスが誤って見つからないとマークされる可能性がありました。(markt)
69466: HEADリクエストの処理を再構築。ユーザーによって明示的に設定されたヘッダーは削除されず、HEADリクエストに存在する任意のヘッダーは、同等のGETリクエストにも存在します。RFC 9110、セクション9.3.2に従い、GETリクエストに存在するが同等のHEADリクエストには存在しないヘッダーがいくつかある場合があります。(markt)
69471: `ApplicationDispatcher.invoke()`によって捕捉された`CloseNowException`のインスタンスをエラーレベルではなくデバッグレベルでログに記録するように変更。これらはクライアントの切断または類似のI/O問題によって引き起こされた可能性が非常に高いためです。(markt)
69442の修正に対するテストケースを追加。また、`application/x-www-form-urlencoded`への参照をリファクタリング。Chenjpによるプルリクエスト #779 に基づく。(markt)
69476: `DefaultServlet`でPUT失敗を報告しようとした際の潜在的なISEを捕捉。(remm)
`RateLimitFilter`において、HTTPのRateLimitヘッダーフィールド (ドラフト)のサポートを追加。Chenjpによるプルリクエスト #775 に基づく。(markt)
69478: クッキーに対して`setHttpOnly(boolean)`または`setSecure(boolean)`を呼び出す際に、メソッドに渡された値に関わらずそれぞれのフラグが設定されることを意味していた、11.0.0-M19で導入された回帰を修正。(markt)
#787: 69478に対する回帰テストを追加。Thomas Krischによるプルリクエスト。(markt)
デフォルトサーブレットは、要求された範囲の2つ以上が重複する場合、HTTPレンジリクエストを拒否するようになりました。Chenjpによるプルリクエスト #782 に基づく。(markt)
デフォルトサーブレットによって処理される部分的なPUTリクエストのContent-Range検証を強化。Chenjpによるプルリクエスト #778 で提供。(markt)
グローバルリソースにおける`DataSourceStore`のルックアップを調和させ、通常そこで使用されない`comp/env`プレフィックスをオプションで回避するようにします。(remm)
RFC 9110で要求されているように、HTTP `Range`ヘッダーは`GET`リクエストに対してのみ処理されるようになりました。Chenjpによるプルリクエスト #790 に基づく。(markt)
デフォルトサーブレットの`useAcceptRanges`初期化パラメータを非推奨化。Tomcat 12以降では削除され、実質的に`true`にハードコードされます。(markt)
`WebdavServlet`用の`DataSource`ベースのプロパティストレージを追加。(remm)
Coyote
`encodedSolidusHandling`をサーブレット仕様に合わせる。パススルーモードが使用される場合、アプリケーションがパスをデコードする際にエラーや破損を避けるため、任意の`%25`シーケンスもパススルーされるようになります。(markt)
Jasper
メソッドパラメータのEL評価をさらに最適化。Paolo B.氏によるパッチ。(markt)
69381の修正に続く対応。式言語におけるメソッドルックアップパフォーマンスの最適化を別の場所にも適用。(markt)
Webアプリケーション
ドキュメント。`ResourceParams`要素への参照を削除。`ResourceParams`のサポートはTomcat 5.5.xで削除されました。(markt)
ドキュメント。 69477: RemoteIPFilter
の属性名を修正。属性は allowedInternalProxies
ではなく internalProxies
です。Jorge Díaz が提供したプルリクエスト #786。 (markt)
例。pathInfo コンポーネントを含む URL を介して Servlet Request Info の例が呼び出された際のリンク切れを修正。 (markt)
例。リクエストヘッダーの例におけるセッションクッキー値の難読化を JSON レスポンスにまで拡張。 (markt)
例。サーブレットセッションの例にセッション属性を削除する機能を追加。 (markt)
例。サーブレットセッションの例に、1 セッションあたり 10 属性のハードコードされた制限を追加。 (markt)
例。JSP フォーム認証の例に、セッション属性を削除する機能と、1 セッションあたり 10 属性のハードコードされた制限を追加。 (markt)
例。ショッピングカートの例において、定義済みのアイテムのみをカートに追加できるように制限。 (markt)
例。JSP カレンダーの例を削除。 (markt)
その他
69465: Tomcat 組み込み JAR を使用したネイティブイメージコンパイル中の警告を修正。 (markt)
Commons DBCP の Tomcat フォークを 2.13.0 に更新。 (markt)
EasyMock を 5.5.0 に更新。 (markt)
Checkstyle を 10.20.2 に更新。 (markt)
BND を 7.1.0 に更新。 (markt)
Eclipse JDT コンパイラを 4.34 に更新。 (markt)
フランス語翻訳の改善。(remm)
韓国語翻訳の改善。 (markt)
中国語翻訳の改善。 (markt)
tak7iji氏による日本語翻訳の改善。(markt)
2024-11-10 Tomcat 11.0.1 (markt)
Catalina
新しい Servlet API メソッド HttpServletResponse.sendEarlyHints()
のサポートを追加。 (markt)
55470: ダイジェスタまたはウェブアプリケーションクラスローダーで ClassNotFoundException
が発生した場合にクラスパスを報告するデバッグログを追加。Ralf Hauser が提供したパッチに基づく。 (markt)
69374: DefaultServlet
のリスティングにおいて、テーブルヘッダーとボディを適切に分離。 (michaelo)
69373: DefaultServlet
の HTML リスティングにおけるファイルの最終更新日時表示を改善(柔軟に)。 (michaelo)
DefaultServlet
の HTML 出力を改善。 (michaelo)
RateLimitFilter
を FilterBase
を基底クラスとして使用するようにリファクタリング。これを行う主な利点は、init-param
値を処理するコードが少なくなることです。 (markt)
69370: DefaultServlet
の HTML リスティングが誤ったラベルを使用している点を修正。 (michaelo)
部分的にマッピングされたリクエストに対する CrawlerSessionManagerValve
での NPE を回避。 (remm)
フォルダをロックする際に、レスポンスに欠落していた WebDAV Lock-Token
ヘッダーを追加。 (remm)
無効な WebDAV ロックリクエストは 400 で拒否されるべきです。 (remm)
コレクションのロック解除を試みた際の WebDAV のリグレッションを修正。 (remm)
WebDAV コピー操作において、宛先がロックされていないことを検証。 (remm)
リクエストボディを含む WebDAV MKCOL
操作に対して 415 レスポンスを送信。これはオプションであり、サポートされていないためです。 (remm)
WebDAV XML 要素に DAV:
名前空間を強制。 (remm)
親コレクションがロックされている場合、子リソースへの新しい WebDAV ロックを許可しない (RFC 4918 セクション 6.1)。 (remm)
WebDAV DELETE
は、正常に削除されたリソースの既存のロックをすべて削除するべきです。 (remm)
RFC 4918 セクション 7.3 および付属書 D に従って WebDAV ロックのヌルサポートを削除。代わりに、存在しないリソースのロックは、通常のロックでロックされた空のファイルを作成します。 (remm)
WebDAV 共有ロックの実装を RFC 4918 に準拠するように書き直し。 (remm)
Apache Jackrabbit プロジェクトのコードを使用して WebDAV If
ヘッダーを実装。 (remm)
WebDAV サーブレットに PropertyStore
インターフェースを追加し、デッドプロパティのストレージ実装を可能に。使用されるストアは、WebDAV サーブレットの propertyStore
初期化パラメータを使用して、ストアのクラス名を指定することで設定できます。カスタムストアが設定されていない場合は、シンプルな非永続的実装が使用されます。 (remm)
新しく追加された PropertyStore
を使用して WebDAV PROPPATCH
メソッドを実装し、PROPFIND
を更新してそれをサポート。 (remm)
ウェブアプリケーションクラスローダーリソースを検索する際に、見つからなかった結果をキャッシュ。これにより、java.sql.DriverManager
などのコンポーネントが、状況によっては同じクラスを繰り返し検索することで発生するパフォーマンスの問題に対処。大規模なウェブアプリケーションでは、これがパフォーマンス問題を引き起こす可能性があります。キャッシュのサイズは、StandardContext の新しい notFoundClassResourceCacheSize
属性で制御できます。 (markt)
INITIALIZED
状態後の停止は noop であるべきです。init 後にサブコンポーネントが FAILED
状態になる可能性があるためです。 (remm)
同じリソースに対する同時 PUT
および DELETE
リクエストが存在する場合の、ウェブリソースキャッシュサイズ計算の誤りを修正。 (markt)
ウェブリソースキャッシュのデバッグログを追加し、リソースの追加および削除時に現在のサイズを追跡できるように。 (markt)
ロックトークンに対する従来の WebDAV opaquelocktoken:
スキームを、RFC 4918 で推奨される urn:uuid:
に置き換え、secret
初期化パラメータを削除。 (remm)
同じパスに対する同時読み書き(例:GET
と PUT
/ DELETE
)により、FileResource
が破損し、一部のフィールドはファイルが存在するかのように設定され、一部は存在しないかのように設定されていました。これにより、メタデータの一貫性が失われました。 (markt)
69415: ExpiresFilter
が GET
および HEAD
リクエストに対してのみキャッシュヘッダーを設定するように保証。また、アプリケーションが Cache-Control: no-store
を設定しているリクエストはスキップ。 (markt)
69419: 複数レベルのネストされたインクルードがある場合の ServletRequest.getAttribute()
のパフォーマンスを改善。John Engebretson が提供したパッチに基づく。 (markt)
69426: Class.getProtectionDomain().getCodeSource().getLocation()
の値(null ではなく)を提供するように復元。これは、SecurityManager が使用されていない場合でも、多くのライブラリおよび JRE 機能がこれが非 null であることに依存しているためです。 (markt)
すべてのアプリケーションが HttpServletResponse.sendError()
をステータスコード 103 で呼び出すことにより、早期ヒント情報レスポンスを送信できるように。 (schultz)
Coyote
SSL 実装から返されたゼロ長バイト配列に対して、null SSL セッション ID を返すように修正。 (remm)
BoringSSL では OpenSSLConf がサポートされていないため、これをスキップ。 (remm)
tomcat-native 用 OpenSSLEngine のバッファ再利用を FFM コードと連携。 (remm)
AbstractHttp11Protocol
に存在しない場合、Http11Processor
に HttpParser
を作成し、通常の HTTP/1.1 のライフサイクル堅牢性を向上。この新しい動作は、以前の HTTP/2 パフォーマンス改善のためのリファクタリングで導入されました。 (remm)
OpenSSLContext
は、init
メソッドで何らかの異常が発生したことが判明した場合、KeyManagementException
をスローするようになりました。これは javax.net.ssl.SSLContext.init
でドキュメント化されている動作です。これにより、エラー処理が一貫性を持つようになります。 (remm)
Jasper
69399: タグプーリング使用時にタグ release
が呼び出され、使用しない場合にスキップされる原因となった改善 69333 によるリグレッションを修正。Michal Sobkiewicz が提出したパッチ。 (remm)
69381: 式言語におけるメソッドルックアップのパフォーマンスを改善。必要なメソッドに引数がない場合、キャストや強制的な型変換を考慮する必要がなく、メソッドルックアッププロセスを簡素化できます。John Engebretson が提供したプルリクエスト #770に基づく。 (markt)
69382: 生成されたコード内で比較的高価なメソッド呼び出しの結果を再利用することで、JSP include アクションのパフォーマンスを改善。繰り返しの呼び出しを回避。John Engebretson が提供したパッチ。 (markt)
69398: PageContextImpl
での不要なオブジェクト割り当てを回避。John Engebretson の提案に基づく。 (markt)
69406: StringInterpreterEnum
を使用する際、無効な Enum
が検出されても IllegalArgumentException
をスローしないように。代わりに、実行時に値を解決します。John Engebretson が提供したパッチ。 (markt)
69429: パラメータを受け入れないメソッドの EL (Expression Language) メソッドパラメータ評価を最適化。John Engebretson が提供したパッチ。 (markt)
その他
コード署名のため、DigiCert ONE から ssl.com eSigner に切り替え。 (markt)
Byte Buddy を 1.15.10 に更新。 (markt)
CheckStyle を 10.20.0 に更新。 (markt)
ドイツ語翻訳の改善。 (remm)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2024-10-09 Tomcat 11.0.0 (markt)
Catalina
Jakarta Authentication モジュールが registerServerAuthModule()
を介して設定された際に、ServerAuthModule.initialize()
が呼び出されることを保証。 (markt)
Jakarta Authentication CallbackHandler
が Subject
内で GenericPrincipal
を一つのみ作成することを保証。 (markt)
Jakarta Authentication プロセスが例外で失敗した場合、ServerAuthContext
が設定していない可能性があるため、HTTP レスポンスステータスを明示的に 500 に設定。 (markt)
Jakarta Authentication プロバイダー設定を永続化する際に、まだ存在しない必要な親ディレクトリを作成。 (markt)
Jakarta Authentication プロバイダー設定の永続化に関連する一時ファイルを削除する際にエラーを検出するためのロジックを修正。 (markt)
Jakarta Authentication コールバックを処理する際、CallerPrincipalCallback
が Principal を提供しない場合でも、PasswordValidationCallback
から取得した Principal を null
で上書きしないように。 (markt)
1秒間に複数回設定を保存する際に、ストア設定のバックアップが失われるのを回避。 (remm)
69359: WebdavServlet
が、スーパー クラスの getRelativePath()
メソッドを誤った Javadoc で重複させている点を修正。 (michaelo)
69360: WebdavServlet
と DefaultServlet
の間で DELETE
の動作が一貫しない点を修正。 (michaelo)
リソースの削除が許可されていない場合に WebdavServlet
が Allow
ヘッダーを適切に返すように修正。 (michaelo)
WebdavServlet
で非ワイルドカードマッピングが使用された場合にログ警告を追加。 (remm)
69361: WebDAV へのマルチステータスレスポンス内のエントリの順序が、リソースが処理された順序と一貫していることを保証。 (markt)
69362: WebDAV を介したコレクションの削除が失敗した場合に、より良いマルチステータスレスポンスを提供。削除できない空のディレクトリもレスポンスに含まれるようになりました。 (markt)
69363: WebDAV サーブレットで getPathPrefix()
を一貫して使用し、WebDAV サーブレットがウェブアプリケーション内のサブパスにマウントされている場合に正しいパスが使用されることを保証。 (markt)
Coyote
69316: FastHttpDateFormat#getCurrentDate()
(HTTP レスポンスの Date ヘッダーを生成するために使用) が、指定された入力に対して正しい文字列を生成することを保証。この変更以前は、一部のケースで出力が1秒ずれている可能性がありました。Chenjp が提供したプルリクエスト #751。 (markt)
多数の空白行が先行する HTTP/1.1 リクエストについて、リクエスト開始時刻が正確に記録されていなかった可能性を修正。 (markt)
HTTP/2 プロトコルが、ネストされている HTTP/1.1 コネクタから継承する属性のリストに server
と serverRemoveAppProvidedValues
を追加。 (markt)
Apache Tomcat Native 使用時に、APR 終了後に GC によって SSLContext オブジェクトが破棄されることによるクラッシュの可能性を回避。 (remm)
リクエストのトレーラーフィールドに対する HTTP/2 処理を改善。トレーラーフィールドは、後続のストリームのヘッダーより前に受信される必要がなくなり、コネクタがトレーラーフィールドを受信する前に一時停止された場合でも、進行中のストリームのトレーラーフィールドが失われることはありません。 (markt)
受信 HTTP/2 フレームの処理中にストリームレベルエラーが検出された場合、HTTP/2 ストリームの要求と応答が早すぎずにリサイクルされることを保証。これにより、アクセスログに不正確な処理時間が表示される可能性があります。 (markt)
Jasper
69333: 生成された JSP から不要なコードを削除。 (markt)
69338: 2つ以上のオペランドを持つ AND または OR 演算を含む式、および not empty
を使用する式の処理パフォーマンスを改善。 (markt)
69348: ラムダ引数を追跡するために使用されるデータ構造に遅延初期化を使用することで、ELContext
のメモリ消費を削減。 (markt)
Webアプリケーション
OpenSSL が使用されている場合、マネージャーウェブアプリが再び証明書にアクセスできるようになりました。 (remm)
その他
Eclipse JDT コンパイラを 4.33 に更新。 (markt)
Byte Buddy を 1.15.3 に更新。 (markt)
CheckStyle を 10.18.2 に更新。 (markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
Ch_jpによる中国語翻訳の改善。 (markt)
2024-09-16 Tomcat 11.0.0-M26 (markt)
Coyote
69320 を修正。これは 69302 の修正におけるリグレッションであり、いずれかのクライアントが HTTP/2 リセットフレームを送信すると、すべてのクライアントで HTTP/2 処理が壊れる可能性があったことを意味します。 (markt)
2024-09-10 Tomcat 11.0.0-M25 (markt)
Catalina
Jakarta Servlet プロジェクトからの最近の明確化を実装。コンテンツ長が宣言されている場合、そのバイト数分がレスポンスに書き込まれると、それ以上の書き込みは IOException
をトリガーするべきです。 (markt)
ApplicationHttpRequest.parseParameters()
のパフォーマンスを改善。John Engebretson が提供したサンプルコードとテストケースに基づく。 (markt)
Coyote
チャンク化されたリクエストボディの非ブロッキング読み取りに関する修正におけるリグレッションを修正。これにより、読み取るデータがない場合に InputStream.available()
が非ゼロ値を返すという問題が発生していました。特定の状況下では、これによりブロッキング読み取りがさらにデータを待ってブロックし、すでに受信したデータを返さない可能性がありました。 (markt)
Rfc6265CookieProcessor
に新しい属性 cookiesWithoutEquals
を追加。デフォルトの動作は変更されていません。 (markt)
OpenSSLImplementation
を使用する際、Tomcat がクライアントから TLS close_notify メッセージを受信した後、同様のメッセージを送信することを保証。 (markt)
69301: アクセスログにレスポンスヘッダーを書き込む際に、トレーラーヘッダーが非トレーラーヘッダーを置き換える問題を修正。hypnoce が提供したパッチとテストケースに基づく。 (markt)
69302: HTTP/2 クライアントがリクエストボディが完全に書き込まれる前にストリームをリセットした場合、ReadListener.onErrror()
の呼び出しを介して ReadListener
に通知されることを保証。 (markt)
Jasper
TldScanner
が詳細なスキャン結果をトレースレベルではなくデバッグレベルでログに記録するように戻す。 (markt)
OptionalELResolver
の実装を簡素化。 (markt)
WebSocket
ブロッキングメッセージの書き込みがタイムアウトを超過した場合、例外をスローする前に再度書き込みを試みないように。 (markt)
メッセージ処理中(例:@onMessage
でアノテーションされたメソッド内)に例外がスローされても、自動的に接続が閉じられるべきではありません。アプリケーションが例外を処理し、接続を閉じるかどうかを決定するべきです。 (markt)
Webアプリケーション
ドキュメント。ロギング設定ドキュメントを現在のデフォルトと整合。 (markt)
jdbc-pool
69255: 69206 の修正におけるリグレッションを修正。これにより、ステートメント実行時の例外が、アプリケーションに元の SQLException
が表示される代わりに java.lang.reflect.UndeclaredThrowableException
にラップされていました。Michael Clarke が提供したプルリクエスト #744により修正。 (markt)
69279: 69206 の修正におけるリグレッションを修正。これにより、以前は null
ResultSet
を返していたメソッドが、null デリゲートを持つプロキシを返すようになっていました。Huub de Beer が提供したプルリクエスト #745により修正。 (markt)
その他
デフォルトで tomcat-coyote-ffm.jar
を JAR スキャンから除外。 (markt)
デフォルトのログハンドラーレベルを ALL
に変更。これにより、ロガーがトレース (FINEST
) レベルのロギングを使用するように設定されている場合でも、ログメッセージがデフォルトで破棄されないようにします。 (markt)
Hamcrest を 3.0 に更新。 (markt)
EasyMock を 5.4.0 に更新。 (markt)
Byte Buddy を 1.15.0 に更新。 (markt)
CheckStyle を 10.18.0 に更新。 (markt)
Apache Commons BCEL の内部フォークを 6.10.0 に更新。 (markt)
Fernandoによるスペイン語翻訳の改善。 (markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2024-08-06 Tomcat 11.0.0-M24 (markt)
Catalina
69234: WAR ファイルでの並行デプロイメントのサポートを壊していた、java.net.URL
の代わりに java.net.URI
を使用するリファクタリングによって引き起こされたリグレッションを修正。 (markt)
Coyote
HTTP/2 処理にコヨーテリクエストとレスポンスのリサイクルを追加したリファクタリングにおけるリグレッションを修正。 (markt)
未リリース Tomcat 11.0.0-M23 (markt)
Catalina
RFC 8297 (早期ヒント) のサポートを追加。アプリケーションは、HttpServletResponse
を org.apache.catalina.connector.Reponse
にキャストし、void sendEarlyHints()
メソッドを呼び出すことでこの機能を使用できます。このメソッドは、Servlet 6.2 以降で Servlet API に追加されます(キャストの必要がなくなります)。 (markt)
69214: POST を使用するが content-type
ヘッダーを含まない CORS リクエストを拒否しないように。Tomcat は現在、これをシンプルな CORS リクエストとして正しく処理します。thebluemountain が提案したパッチに基づく。 (markt)
SpnegoAuthenticator
をリファクタリングし、利用可能な場合に Subject.doAs()
ではなく Subject.callAs()
を使用するように。 (markt)
Coyote
LibreSSL サポートのための FFM 互換メソッドを追加。現時点では再ネゴシエーションはサポートされていません。 (remm)
FFM を使用した OpenSSL ライブラリのロードを設定するために、org.apache.tomcat.util.openssl.LIBRARY_NAME
(ロードするライブラリ名を指定)と org.apache.tomcat.util.openssl.USE_SYSTEM_LOAD_LIBRARY
(FFM ライブラリロードコードではなく System.loadLibrary
を使用するために true
に設定)を追加。 (remm)
BoringSSL サポートのための FFM 互換メソッドを追加。多くの場合、再ネゴシエーションはサポートされていません。 (remm)
読み取るべきリクエストボディがある場合にのみ、HTTP/2 ストリーム入力バッファが作成されることを保証。 (markt)
HttpParser
インスタンスの作成をプロセッサレベルからプロトコルレベルにリファクタリング。パーサーの設定はプロトコルに依存し、それ以外の場合パーサーはステートレスであるためです。 (markt)
HTTP/2 を HTTP/1.1 と整合させ、デフォルトでコンテナ内部の要求および応答処理オブジェクトをリサイクル。この動作は、HTTP/2 アップグレードプロトコルの新しい discardRequestsAndResponses
属性を介して制御できます。 (markt)
jdbc-pool
69206: Statement
メソッド executeQuery()
、getResultSet()
、getGeneratedKeys()
から返されるステートメントが、呼び出し元に返される前に正しくラップされていることを保証。Michael Clarke が提供したプルリクエスト #742に基づく。
その他
test-only
ビルドターゲットの追加後に OSGi 情報が欠落していたパッケージングのリグレッションを修正。 (remm)
Tomcat Native を 2.0.8 に更新。 (markt)
Byte Buddy を 1.14.18 に更新。 (markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2024-07-05 Tomcat 11.0.0-M22 (markt)
Catalina
JAASRealm
が設定ソースを使用して設定済みの configFile
をロードできるようにし、テストでの使用を容易に。 (remm)
setCharacterEncoding(Charset)
が null
で呼び出された場合に、ServletResponse
を拡張するクラスで発生する可能性のある NullPointerException
を修正。 (markt)
JAASCallbackHandler
に不足していたアルゴリズムコールバックを追加。 (remm)
APR および OpenSSL ステータスクラスに OpenSSL バージョン番号を追加。 (remm)
69131: Authenticator 属性 allowCorsPreflight
の filter
値の実装を拡張し、CORS フィルターが /*
にマッピングされている場合にのみ適用されるのではなく、CORS フィルターの設定済み URL パターンに一致するすべてのリクエストに適用されるように。 (markt)
Coyote
コネクタがすべてのローカルアドレスでリッスンしている場合に、アクセプタースレッドのロックを解除するために使用する IP アドレスを特定するアルゴリズムを改善。ポイントツーポイント接続用に設定されているインターフェース、または現在稼働していないインターフェースはスキップされるようになりました。 (markt)
FFM コードで OpenSSL conf コマンドを処理する前に、OpenSSL エラーをクリーンアップしてログに記録。 (remm)
69121: AsyncListener.onError()
が例外をスローするターゲットにディスパッチした場合でも、onComplete()
イベントがトリガーされることを保証。 (markt)
トレーラーヘッダーフィールドのリファクタリングにより、-1
は maxTrailerSize
の許容値として許可されなくなりました。それに応じてドキュメントを調整。 (remm)
FFM を使用する OpenSSL サポートを、Java 22 をマニフェストで宣伝する tomcat-coyote-ffm.jar
という名前の別の JAR に移動。 (remm)
Mac OS 上の FFM 用 OpenSSL ライブラリの検索を修正し、java.library.path
が検索されるように。 (markt)
Jasper
jakarta.el.ImportHandler
の最適化を更新し、Java 23 の java.lang
パッケージに追加された新しいクラスを認識するように。 (markt)
ExpressionFactory.coerceToType()
を使用してオブジェクトが String に強制変換された場合でも、toString()
での例外が ELException
を引き起こすことを保証。 (markt)
JSP コンパイルのコンパイラソースおよび/またはコンパイラターゲットとして Java 24(値 24
)を指定するサポートを追加。これらの値をサポートしない Eclipse JDT コンパイラバージョンで使用された場合、警告がログに記録され、デフォルトが使用されます。 (markt)
69135: JAR ファイルにパッケージ化されたタグファイルで include ディレクティブを使用する際、コンテキスト相対インクルードが正しく処理されることを保証。 (markt)
69135: JAR ファイルにパッケージ化されたタグファイルで include ディレクティブを使用する際、ファイル相対インクルードが正しく処理されることを保証。 (markt)
69135: JAR ファイルにパッケージ化されたタグファイルで include ディレクティブを使用する際、ファイル相対インクルードが /META_INF/tags/
ディレクトリ外、または JAR ファイル外のファイルにアクセスできないことを保証。 (markt)
Webアプリケーション
自動ポートを使用している場合のコネクタのステータスサーブレット詳細表示を修正。 (remm)
その他
テストスイートのみの実行を許可する test-only
ビルドターゲットを追加。これにより、Tomcat の実行をサポートする最小限の Java バージョンまで対応。 (rjung)
Eclipse JDT コンパイラを 4.32 に更新。 (markt)
UnboundID を 7.0.1 に更新。 (markt)
SpotBugs を 4.8.6 に更新。 (markt)
ユニットテストで使用されているEasyMockのバージョンでは不要なため、cglibの依存関係を削除しました。(markt)
EasyMockを5.3.0に更新しました。これにより、Byte-Buddy 1.14.17へのテスト依存関係が追加されます。(markt)
Vladimír Chlupによるチェコ語翻訳の改善。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
fangzhengによる中国語翻訳の改善。(markt)
2024-06-18 Tomcat 11.0.0-M21 (markt)
Catalina
WebDAV使用時のシャローコピーのサポートを追加しました。(markt)
WebdavFixFilter
が不要になったため、削除しました。(markt)
69066: Base64処理時のSPNEGO認証器の回帰を修正しました。Daniel Lykoによる提出。(remm)
確立されたGSSコンテキストから拡張/追加情報を取得するためのRealmBase.getPrincipal(GSSName, GSSCredential, GSSContext)
を追加しました。(michaelo)
68721の修正における回帰を修正しました。これにより、一部のLinkageError
インスタンスがClassNotFoundException
として報告される問題が発生していました。(markt)
コンテキストがブルームフィルタを使用するように構成されている場合でも、JARファイルを介してデプロイされた静的リソースが引き続きアクセス可能であることを保証します。berganderによって提供されたプルリクエスト#730に基づいています。(markt)
AprLifecycleListener
をより堅牢にするため、参照カウントを導入しました。これは特に、独立したライフサイクルを持つ複数のサーバーインスタンスがあり、複数のサーバーインスタンスがAprLifecycleListener
を必要とするような、より複雑な組み込み構成を対象としています。(markt)
Coyote
OpenSSL FFMがERR_error_stringを128バイトバッファで使用する問題を修正し、代わりにERR_error_string_nを使用するようにしました。(remm)
WindowsでCA証明書をnullパスに設定するとクラッシュする問題を修正しました。(remm)
69068: HTTP/2使用時の非同期・ノンブロッキング読み取りで、読み取りタイムアウトがトリガーされることを保証します。(markt)
69133: 一貫性を保つため、Executor
要素と同様に、Connector
要素にタスクキューサイズ設定を追加しました。(remm)
接続ごとのアクティブなHTTP/2ストリームのカウントをより堅牢にしました。(markt)
TLS 1.3クライアントによる再鍵交換のサポートを追加しました。(markt)
Jasper
68546: JSP用に生成されたサーブレットコードの初期ロードに対する小さな追加最適化。Dan Armstrongの提案に基づいています。(markt)
Webアプリケーション
マネージャーウェブアプリケーションのメインページにサブタイトルを設定する機能を追加しました。これは、多数のインスタンスを持つユーザーがそれらを簡単に区別できるようにするためのものです。Simon Arameによるプルリクエスト#724に基づいています。(markt)
その他
Java 17で動作するDerbyの最新バージョンであるため、Derbyを10.16.1.1に戻しました。(markt)
Commons Daemon 1.4.0に更新しました。(markt)
Jakarta Annotations API 3.0に更新しました。(markt)
Jakarta Authentication API 3.1に更新しました。(markt)
Objenesis 3.4に更新しました。(markt)
Checkstyle 10.17.0に更新しました。(markt)
SpotBugs 4.8.5に更新しました。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2024-05-08 Tomcat 11.0.0-M20 (markt)
Catalina
セッションマネージャーから、sessionCounter
(アクティブセッション数と期限切れセッション数の追加によって合理的な近似として置き換えられました)とduplicates
(現在の実装では発生し得ないイベントを表すものではありません)の統計を非推奨とし、削除しました。(remm)
68890: ManagerウェブアプリケーションのJSPの出力エンコーディングを、それらのファイル内のXML宣言と合わせるようにしました。(schultz)
Basic認証をRFC 7617の要件に準拠するように更新しました。これには、trimCredentials
設定の削除が含まれ、この設定は現在false
にハードコードされています。(markt)
値のないクッキーをログに記録する際の、小さなパフォーマンス最適化。(schultz)
非同期リクエストのエラー処理を修正しました。アプリケーションがAsyncListener.onError()
中にディスパッチを実行した場合、エラーページメカニズムを使用してリクエストを完了するのではなく、ディスパッチが実行されるようになりました。(markt)
AbstractAccessLogValveのElapsedTimeElementを、カスタマイズ可能なスタイルを使用するようにリファクタリングしました。(schultz)
AccessLogValveとExtendedAccessLogValveにタイムスケールオプションを追加しました。ExtendedAccessLogValveの"time-taken"トークンにタイムスケールを適用できるようにしました。(schultz)
WebDAVロックのnull(存在しないリソースのロック)に関するスレッドセーフティと削除を修正しました。(remm)
WebDAVロックの有効期限の定期的なチェックを追加しました。(remm)
Asn1Parser
を拡張してUTF8String
をパースできるようにしました。(michaelo)
削除された属性のMBeanメタデータを削除しました。Shawn Q.によるプルリクエスト#719に基づいています。(markt)
Manager.rotateSessionId()
から重複IDチェックを削除しました。(markt)
Coyote
tomcat-embed-core.jar
にOpenSSL FFMクラスを追加しました。(remm)
非セキュアおよびセキュアな書き込みをNIOと同期させ、書き込むバイトがない場合は書き込み試行をスキップするようにしました。(markt)
socket.unlockTimeout
に任意の正の値を許可するようにしました。負またはゼロの値が設定されている場合、デフォルトの250ms
が使用されます。(mark)
コネクタがアンロックされるのを待つ時間を短縮しました。以前のデフォルトである10秒は、アンロックが失敗した場合に著しく長すぎました。待機時間は現在、100msにsocket.unlockTimeout
の2倍を加えた時間となっています。(markt)
リクエストボディがチャンクエンコーディングを使用し、ノンブロッキングIOを使用して読み取られる場合に、onAllDataRead()
イベントがトリガーされることを保証します。(markt)
68934: maxConnections
を超過した際にラッチオブジェクトにデバッグログを追加しました。(remm)
トレーラーフィールドの処理をリファクタリングし、MimeHeaders
インスタンスを使用してトレーラーフィールドを格納するようにしました。(markt)
同じトレーラーフィールドの複数のインスタンスが正しく処理されることを保証します。(markt)
チャンクされたリクエストボディのノンブロッキング読み取りを修正しました。(markt)
HTTPヘッダーのパースをリファクタリングし、共通のパースコードを使用するようにしました。(markt)
無効なHTTPレスポンスヘッダーが破棄された際、オフバイワンエラーにより、レスポンス内の最初のヘッダーも破棄されていました。foremansによるプルリクエスト#710に基づいた修正です。(markt)
Jasper
JSPコンパイルのコンパイラソースおよび/またはコンパイラターゲットとしてJava 23(値23
)を指定するサポートを追加しました。これらの値をサポートしないEclipse JDTコンパイラバージョンで使用された場合、警告がログに記録され、デフォルトが使用されます。(markt)
WebSocket
68884: 異常終了時のWebSocketクローズメッセージ書き込みにおける書き込みタイムアウトを短縮しました。タイムアウトはデフォルトで50ミリ秒であり、WebSocketセッションに関連付けられたユーザープロパティコレクション内のorg.apache.tomcat.websocket.ABNORMAL_SESSION_CLOSE_SEND_TIMEOUT
プロパティを使用して制御できます。(markt)
Webアプリケーション
例: 複数のクライアントが同時に切断する際のWebSocketチャットアプリケーションのパフォーマンスを改善しました。(markt)
例: WebSocketチャットアプリケーション使用時に表示される過去のメッセージ数を増やしました。(markt)
例: 複数のクライアントが同時に切断する際のWebSocketスネークアプリケーションのパフォーマンスを改善しました。(markt)
その他
Commons Codecによって提供されるバージョンではなく、JREによって提供されるBase64エンコーダーおよびデコーダーを使用するように切り替えました。これにより、Commons Codecの内部フォークが削除されます。(markt)
Eclipse JDTコンパイラ 4.31に更新しました。(markt)
NSISを3.10に更新しました。(mark0t)
UnboundIDを7.0.0に更新しました。(markt)
Checkstyleを10.16.0に更新しました。(markt)
JaCoCoを0.8.12に更新しました。(markt)
SpotBugsを4.8.4に更新しました。(markt)
Apache Commons BCELの内部フォークを6.9.0に更新しました。(markt)
Apache Commons DBCPの内部フォークを2.12.0に更新しました。(markt)
tak7ijiによる日本語翻訳の改善。(remm)
2024-04-16 Tomcat 11.0.0-M19 (remm)
Catalina
SemaphoreValve
にhighConcurrencyStatus
属性を追加しました。これにより、オプションで、セマフォから許可が得られない場合にバルブがクライアントにエラー状態コードを返すことを許可します。(remm)
SecurityListenerに、実行中のTomcatインスタンスのビルド日からの「経過時間」をチェックする機能を追加し、サーバーが古い場合に警告をログに記録するようにしました。(schultz)
AsyncContext
を使用する場合、リサイクル後にAsyncContext
を使用しようとすると、NullPointerException
を許容するのではなく、IllegalStateException
をスローするようにしました。(markt)
Servlet 6.1 APIに合わせるため、HttpSession.getAccessor()
のデフォルト実装を追加しました。(markt)
Jakarta EE 11 XMLスキーマを追加し、Tomcatおよび含まれるウェブアプリケーションがそれらを使用するように更新しました。(markt)
StandardServer.servicesを保護するためのスレッドセーフティメカニズムを、単純な同期ロックからReentrantReadWriteLockに変更し、複数のリーダーが同時に操作できるようにしました。Markus Wolfeの提案に基づいています。(schultz)
ReentrantReadWriteLockを使用して、サービスコネクタ、コンテナの子、およびサービスエグゼキュータのアクセス同期を改善しました。(remm)
Servlet API経由でファイルをアップロードしようとし、そのファイルがInteger.MAX_VALUE
より大きい場合の整数オーバーフローの処理を改善しました。(markt)
68862: 読み取りエラー処理時に発生しうるレスポンスコミットを処理するようにしました。(remm)
Coyote
エンドポイントにthreadsMaxIdleTime
属性を追加しました。これにより、内部エグゼキュータが設定されたminSpareThreads
サイズにスケールバックするまでの時間を設定できるようになります。(remm)
Rfc6265CookieProcessor
によって生成されるSet-Cookie
ヘッダーを調整し、空文字列の値を持つ属性が、等号や値なしのベア属性名として出力されるようにしました。これにより、同様の新しい属性の将来のサポートが、特別な処理を必要とせずに簡素化されます。(markt)
HttpOnly
およびSecure
属性の内部表現をリファクタリングし、Set-Cookie
ヘッダー生成の最近の変更との一貫性のために空文字列を値として使用するようにしました。(markt)
RFC 6265ではこの場合の値ゼロが許可されていないため、Max-Age
値がゼロに設定されたクッキーに関連付けられたSet-Cookie
ヘッダーに対してMax-Age
属性を生成しないようにしました。(markt)
ユーザー提供のSSLContext
インスタンスのサポートにおける回帰を修正しました。これにより、org.apache.catalina.security.TLSCertificateReloadListener
が機能しなくなっていました。(markt)
Jasper
JSPエンジンがリクエスト/レスポンスをWriter
ではなくOutputStream
を使用するサーブレットに転送する場合のケースを処理するようにしました。これは、その後にWriter
を取得しようとするコードパスでIllegalStateException
をトリガーしていました。(markt)
タグライブラリがJARファイルにパッケージ化され、ウェブアプリケーションが展開されたディレクトリではなくWARファイルとしてデプロイされるケースを正しく処理するようにしました。(markt)
アプリケーションがカスタムXMLInputFactoryを使用する場合に、JSPコンパイラによってウェブアプリケーションのClassLoaderが固定されるのを防ぐようにしました。Simon Niederbergerからの提案に基づいています。(schultz)
その他
Checkstyleを10.14.1に更新しました。(markt)
Apache Commons BCELの内部フォークを6.8.2に更新しました。(markt)
Apache Commons Codecの内部フォークを1.16.1に更新しました。(markt)
フランス語翻訳の改善。(remm)
tak7ijiによる日本語翻訳の改善。(remm)
leeyazhouによる中国語翻訳の改善。(remm)
2024-03-14 Tomcat 11.0.0-M18 (markt)
一般
最小サポートJavaバージョンをJava 17に引き下げました。(markt)
Catalina
フィルターチェーン構築のマイナーなパフォーマンス改善。Luke Miaoによるプルリクエスト#702のアイデアに基づいています。(remm)
Writer
とOutputStream
のエラー処理を統一しました。discardFacades
がデフォルト値のtrue
に設定されている場合、レスポンスがリサイクルされた後にいずれかを使用すると、NullPointerException
がトリガーされるようにしました。(markt)
68692: Executor
要素を使用して設定される標準スレッドプール実装が、NIO2のより良いサポートのためにExecutorService
を実装するようになりました。org.apache.catalina.Executor
インターフェースもExecutorService
を継承するようになりました。(remm)
68495: FORM認証成功後に保存されたPOSTリクエストを復元する際、リクエストボディを復元する際にURI、クエリ文字列、プロトコルが破損しないことを保証します。(markt)
リクエストを転送した後、レスポンスがラップされていた場合に単純に閉じるのではなく、サスペンドするためにレスポンスをアンラップするように試みます。この動作を制御するために、Context
に新しいsuspendWrappedResponseAfterForward
ブール属性を追加しました。デフォルトはtrue
です。(remm)
68721: ClassFileTransformer
を使用し、クラスの変換が同じクラスのロードもトリガーする場合に発生しうる重複クラス定義の原因に対するワークアラウンド。(markt)
リライトバルブは、出力が入力と同じであればリライトを実行しないようにしました。(remm)
リライトバルブに新しいvalveSkip
(またはVS
)ルールフラグを追加し、Catalinaパイプライン内の次のバルブをスキップできるようにしました。(remm)
Coyote
OpenSSL FFMコードにおける不正なシンボルルックアップの使用を修正しました。(remm)
HTTP/2ストリームの優先順位付けプロセスを改善しました。ストリームがすべての接続ウィンドウを使用し、まだ書き込むべきコンテンツがある場合、残りのコンテンツの書き込み試行まで待つのではなく、すぐにバックログに追加されるようになりました。(markt)
Jasper
Jakarta EL 6.0 APIの最新の提案に合わせるため、jakarta.el.OptionalELResolver
を介したjava.util.Optional
のメソッド呼び出しサポートをTomcatのJakarta EL API実装に追加しました。プロパティサポートも一貫性を高めるために改良されました。(markt)
Tomcat 11に必要な最小JavaバージョンがJava 17であることに合わせ、compilerSourceVM
とcompilerTargetVM
のデフォルトを17に更新しました。(markt)
クラスター
非同期でのリクエストカウント統計の更新を回避するようにしました。(remm)
その他
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
57130: digest.(sh|bat)がファイルまたは標準入力からパスワードを受け入れられるようにしました。(csutherl/schultz)
2024-02-19 Tomcat 11.0.0-M17 (markt)
Catalina
アプリケーションがHTTPリクエストの標準的なサーブレット処理の外部でHttpSession
と対話するためのメカニズムを提供するHttpSession.getAccessor()
を実装しました。これは、Jakarta WebSocket APIを使用するアプリケーションで特に有用であると予想されます。(markt)
tomcat-embed-core.jar
のJPMSおよびOSGiメタデータを修正しました。これは、JARに含まれなくなったorg.apache.catalina.ssi
パッケージへの参照を削除することによるものです。Jendrik Johannesによるプルリクエスト#684に基づいています。(markt)
ServiceBindingPropertySourceを修正し、プロパティ値を含むファイルから末尾の\r\n
シーケンスが正しく削除されるようにしました(そのように設定されている場合)。Coverity Scanによって特定されたバグです。(markt)
CSRF防止フィルターを改善し、リソース名とサブツリーURLパターンに対してノンスの追加をスキップする機能を追加しました。(schultz)
デバッグロギングの使用を見直し、トレースまたはデータダンプ操作をデバッグレベルからトレースレベルに格下げしました。(remm)
68089: ApplicationHttpRequest
およびApplicationRequest
のリクエスト属性アクセス性能をさらに改善しました。(markt)
68559: 非同期処理中のエラー発生後、非同期エラー処理がレスポンスに書き込めるようにしました。(markt)
Coyote
クッキー属性にnull
値を設定すると、その属性が削除されるようにしました。(markt)
FFM APIによるOpenSSLコンテキストコールバックの状態処理を最適化しました。(remm)
非同期エラー処理をより堅牢にしました。一度接続がクローズ対象とマークされた場合、それ以上の非同期処理でその状態が変更されないことを保証します。(markt)
非同期エラー処理をより堅牢にしました。AsyncListener.onError()
への呼び出しがコンテナに戻った後、コンテナスレッドのみがAsyncContext
にアクセスできることを保証します。これにより、アプリケーションスレッドがAsyncContext
へのアクセスを継続した場合に発生しうる様々な競合状態から保護されます。
デバッグロギングの使用を見直し、トレースまたはデータダンプ操作をデバッグレベルからトレースレベルに格下げしました。特に、ほとんどのHTTP/2デバッグロギングがトレースレベルに変更されました。(remm)
SSLHostConfigCertificate
インスタンスで設定されたユーザー提供のSSLContext
インスタンスのサポートを追加しました。Hakan Altındağによって提供されたプルリクエスト#673に基づいています。(markt)
68558の部分的な修正: リクエストURI、HTTPヘッダー名、リクエストのContent-Type
値のString
への変換結果をキャッシュし、繰り返されるbyte[]
からString
への変換を減らすことでパフォーマンスを向上させました。(markt)
ヘッダー処理エラーに対するHTTP/2クライアントへのエラー報告を改善し、エラーが検出されたフレームの最後で問題を報告するようにしました(ヘッダーの最後ではなく)。(markt)
ストリームがリサイクルされた後、ストリームへの残りの参照を削除しました。これにより、ストリームがより早くガベージコレクションの対象となり、スケーラビリティが向上します。(markt)
Jasper
ArrayELResolver
を介して、配列の読み取り専用プロパティとしてlength
を正しくサポートするための追加修正。(markt)
68546: John Engebretsonの提案に基づき、JSPインポートマップの最適なサイズと型を生成するようにしました。(remm)
デバッグロギングの使用を見直し、トレースまたはデータダンプ操作をデバッグレベルからトレースレベルに格下げしました。(remm)
WebSocket
66508の修正における回帰を修正しました。これにより、特定の状況でUpgradeProcessor
のリークが発生する可能性がありました。(markt)
デバッグロギングの使用を見直し、トレースまたはデータダンプ操作をデバッグレベルからトレースレベルに格下げしました。(remm)
サーバー側が独自のサスペンド/レジューム機能を使用して接続をサスペンドしている間に接続がクローズされた場合でも、WebSocket接続のクローズが完了することを保証します。(markt)
Webアプリケーション
例アプリケーションのRequestHeaderExampleからのJSON形式のレスポンスのサポートを追加しました。(schultz)
その他
マニフェストファイルに残っているOSGi契約参照を修正し、Java EE契約名ではなくJakarta EE契約名を参照するようにしました。Paul A. Nicolucciによって提供されたプルリクエスト#685に基づいています。(markt)
Checkstyleを10.13.0に更新しました。(markt)
JSignを6.0に更新しました。(markt)
Jakarta EE用Tomcat移行ツールのパッケージ版を1.0.7に更新しました。(markt)
Tomcat Nativeを2.0.7に更新しました。(markt)
デバッグレベルメッセージ用の文字列を追加しました。(remm)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2024-01-09 Tomcat 11.0.0-M16 (markt)
Catalina
デフォルトサーブレットによって発行されるディレクトリリダイレクトに対して、init param directoryRedirectStatusCode
を介して代替リダイレクトステータスコードを許可するようにしました。(funkman/markt)
68378: グローバルweb.xml内の拡張子からMIMEタイプへのマッピングをhttpdのものと一致させるため、ggs
にapplication/vnd.geogebra.slides
、mjs
にtext/javascript
、opusにaudio/ogg
を追加しました。(markt)
Coyote
VirtualThreadExecutor
をリファクタリングし、仮想スレッドを使用するように設定されている場合でもプラットフォームスレッドを使用していたNIO2コネクタで利用できるようにしました。(markt)
67675の修正における回帰を修正しました。これにより、明示的な擬似乱数関数を指定せずデフォルトに依存するPKCS#8形式の鍵のTLS鍵ファイル解析が壊れていました。これは通常、OpenSSL 1.0.2で生成された鍵に影響します。(markt)
イントロスペクトされたmbean上で同じ名前の複数の操作を許可するようにしました。これは、2つ目のaddSslHostConfig
メソッドの導入によって引き起こされた回帰を修正するものです。(remm)
HTTP Hostヘッダーがリクエストラインで使用されているホスト(もしあれば)と一致するかどうかのチェックを緩和し、ホスト名は大文字小文字を区別しないため、チェックを大文字小文字を区別しないようにしました。(markt)
68348: セッションクッキーを含むクッキーのpartitioned属性のサポートを追加しました。(markt)
Jasper
Tomcat 11に必要な最小JavaバージョンがJava 21であることに合わせ、compilerSourceVM
とcompilerTargetVM
のデフォルトを21に更新しました。(markt)
Webアプリケーション
68035: Managerアプリケーションにさらに修正を加え、ドキュメントに示されているように、ウェブアプリケーションがパスなしのWARまたはディレクトリ名で指定され、HostのappBase
に配置されているウェブアプリケーションのデプロイを可能にしました。(markt)
その他
Eclipse JDTコンパイラ 4.30に更新しました。(markt)
Checkstyleを10.12.7に更新しました。(markt)
SpotBugsを4.8.3に更新しました。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2023-12-12 Tomcat 11.0.0-M15 (markt)
Catalina
バックグラウンドプロセスは、コンテナのライフサイクル操作と同時に実行されるべきではありません。(remm)
Jakarta Servlet 6.1で追加されたjakarta.servlet.request.secure_protocol
リクエスト属性のサポートを追加しました。これにより、現在は非推奨となっているTomcat固有のリクエスト属性org.apache.tomcat.util.net.secure_protocol_version
が置き換えられます。(markt)
すべてのHTTPエラーディスパッチがGETメソッドを使用することを要求するServlet 6.1仕様の最新の追加に動作を合わせました。(markt)
一部のWebDAVレスポンスにおける意図しないXMLエスケープを修正しました。PROPFINDリクエストへの応答で提供されるサポートロックのXMLリストが、誤ってXMLエスケープされていました。(markt)
68227: AsyncListener.onError()
がAsyncContext.dispatch()
を呼び出す場合、AsyncListener.onComplete()
が呼び出されることを保証します。(markt)
68228: HTTPリクエスト処理中に読み取りタイムアウトが発生した場合、ステータスコード408を使用するようにしました。adwsinghによって提供されたコードに基づいたテストケースが含まれています。(markt)
Coyote
FFM APIを介してOpenSSLを使用する際に、Javaコードを使用して証明書チェーンをロードするようにしました。(remm)
Jasper
68119: 型変換操作中のパフォーマンスを向上させるため、CompositeELResolver
をリファクタリングしました。(markt)
Webアプリケーション
例。ネットワークから切断されたユーザーに関連付けられたスネークがゲームから削除されるように、エラー処理を改善しました。(markt)
その他
OWBモジュールをApache OpenWebBeans 4.0.1に更新しました。(remm)
68124: sample.warをjavaxからjakartaに移行しました。(lihan)
UnboundIDを6.0.11に更新しました。(markt)
Checkstyleを10.12.5に更新しました。(markt)
SpotBugsを4.8.2に更新しました。(markt)
Derbyを10.17.1に更新しました。(markt)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
John William Vicenteによるブラジルポルトガル語翻訳の改善。(markt)
usmazatとremmによるロシア語翻訳の改善。(markt)
2023-11-15 Tomcat 11.0.0-M14 (markt)
Catalina
67667: TLSCertificateReloadListener
がX509Certificate#getNotAfter()
の判読不能なレンダリングを出力する。(michaelo)
マネージャーウェブアプリケーションに含まれるステータスサーブレットが、URLパラメータJSON=true
を使用して統計情報をJSON形式で出力できるようになりました。(remm)
ServiceBindingPropertySourceが、プロパティ値を含むファイルから末尾の改行をオプションでトリミングできるようにしました。(schultz)
FarmWebDeployerでFile.renameToの代わりにFiles.moveを使用するようにし、より広範な環境をサポートし、障害発生時に優れた情報を提供するようにしました。(schultz)
67793: フォーム認証プロセス中にユーザーがページをリフレッシュした場合、フォーム認証後に元のセッションタイムアウトが復元されるようにしました。Mircea Butmalai氏の提案に基づくものです。(markt)
67926: PEMFile
がASN.1 OIDの識別できない文字列表現を出力する。(michaelo)
66875: リクエスト属性jakarta.servlet.error.exception
を設定するだけでは、現在のリクエストとレスポンスのエラー処理がトリガーされないようにしました。(markt)
68054: 65433の修正によって導入された一部のファイル正規化呼び出しを回避しました。(remm)
68089: ApplicationHttpRequest
およびApplicationRequest
のリクエスト属性アクセスのパフォーマンスを改善しました。(markt)
不正なリクエスト(例: 無効なトレーラーヘッダー)によるエラーを500ステータスコードではなく400ステータスコードで報告するようにしました。(markt)
リクエストの読み取り中にIOException
が発生した場合、アプリケーションが例外を捕捉するかどうかにかかわらず、常にエラー処理がトリガーされるようにしました。(markt)
Coyote
66670: SSLHostConfig#certificateKeyPasswordFile
および SSLHostConfig#certificateKeystorePasswordFile
を追加しました。(michaelo)
SSLHostConfigCertificate.setCertificateKeystore(ks)
を呼び出す際に、自動的にsetCertificateKeystoreType(ks.getType())
を呼び出すようにしました。(markt)
Tomcat NativeではなくFFM APIを使用してOpenSSL統合を追加しました。Java 22 (プレビュービルド20以降) 以降を使用する場合、Server
要素にorg.apache.catalina.core.OpenSSLLifecycleListener
リスナーを追加することでOpenSSLサポートを有効にできます。(remm)
67628: SSLHostConfig
のciphers
属性がどのように使用されるかを明確にしました。(markt)
67666: PEMファイルを使用するTLSコネクタがTLSCertificateReloadListener
で動作するか、まれに動作しない場合でも、コネクタ起動時に警告をログ出力するようにしました。(markt)
67675: PEMファイルに対して、JVMがデフォルトでサポートする組み合わせよりも広範なKDFと暗号スイートをサポートするようにしました。具体的には、OpenSSLのデフォルトであるHmacSHA256とDES-EDE3-CBCをサポートします。(markt)
67927: TLS構成の再読み込みにより、コネクタが新しい接続を拒否したり、JVMがクラッシュしたりする可能性がありました。(markt)
67938: TLSハンドシェイクの失敗を引き起こしていた大きなTLSクライアントhelloメッセージの処理を修正しました。(markt)
68026: 選択されたMessageByte
の値を初回アクセス時にStringに変換し、その後のアクセスを高速化し、ガベージコレクションを削減するようにしました。(markt)
Jasper
式言語にレコードのサポートを追加しました。(markt)
68068: ELのパフォーマンスを改善しました。John Engebretson氏の提案に基づくものです。(markt)
WebSocket
WebSocketクライアントAPI JARファイルのMANIFESTにおけるメタデータ不足を修正しました。(markt)
Webアプリケーション
68035: 56248の修正におけるリグレッションを修正しました。これにより、appBase
に既に存在するWARまたはディレクトリ、あるいはxmlBase
に既に存在するコンテキストファイルをマネージャー経由でデプロイできない問題が解消されました。(markt)
その他
67538: Antの<javaversion />
タスクを利用して、最小Javaビルドバージョンを強制するようにしました。(michaelo)
Checkstyleを10.12.4に更新しました。(markt)
JaCoCoを0.8.11に更新しました。(markt)
SpotBugsを4.8.0に更新しました。(markt)
BNDを7.0.0に更新しました。(markt)
2023-10-14 Tomcat 11.0.0-M13 (markt)
Coyote
67670: コードのリファクタリング後にHTTP圧縮で発生したリグレッションを修正しました。(remm)
jdbc-pool
67664: 11.0.0-M12でjdbc-poolを破損させた、不要な完全修飾クラス名のクリーンアップにおけるリグレッションを修正しました。(markt)
2023-10-10 Tomcat 11.0.0-M12 (markt)
Catalina
65770: 証明書の有効期限が切れる一定時間前にTLS構成を自動的に再読み込みするライフサイクルリスナーを提供しました。これは、TLS証明書を定期的に更新するサードパーティ製ツールと組み合わせて使用することを意図しています。(markt)
デプロイ時にコンテキスト記述子の読み取りエラーの処理を修正しました。(remm)
リライトルールqsd (クエリ文字列破棄) がqsaも使用されている場合に無視され、本来は優先されるべきであった問題を修正しました。(remm)
67472: CORSが実際に使用されていない場合に、CORS関連のヘッダーを少なく送信するようにしました。(schultz)
recycle()
メソッド内の失敗処理を改善しました。(markt)
Coyote
67198: プロキシサーバーから受信したauth_type
属性を処理する際に、AJPコネクタ属性tomcatAuthorization
がtomcatAuthentication
属性よりも優先されるようにしました。(markt)
67235: AsyncListener
が完了ではなくディスパッチでエラーを処理する際に発生するNullPointerException
を修正しました。(markt)
非同期処理中にエラーが発生した場合、非同期サイクルごとにエラー処理プロセスが一度だけトリガーされるようにしました。(markt)
IntropectionUtilで引数なしのメソッドをマッチングしようとした際のロジックの問題を修正しました。(remm)
NIO2エンドポイントにおけるreadNotifyおよびwriteNotifyに関するスレッド安全性を改善しました。(remm)
メッセージダイジェストマップにアクセスする際のまれなスレッド安全性問題を回避しました。(remm)
負荷がかかっているアップグレードされた接続の統計情報収集を改善しました。(remm)
Servlet 6.1仕様の変更に合わせて、PushBuilder
は非推奨となりました。これは将来のTomcat 11マイルストーンで103 Early Hintsのサポートとともに置き換えられる予定です。(markt)
HTTP/2サーバープッシュのサポートを削除しました。newPushBuilder()
の呼び出しは常にnull
を返します。(markt)
HTTPトレーラーフィールドの検証を標準フィールドと整合させました。(markt)
HTTP/2オーバーヘッド保護の改善。(markt)
Jasper
67080: 暗黙オブジェクトを使用するJSPにおけるEL式のパフォーマンスを改善しました。John Engebretson氏、Anurag Dubey氏、Christopher Schultz氏の提案に基づくものです。(markt)
その他
Apache Commons FileUploadの内部フォークを7a8c324 (2023-09-16, 1.x-SNAPSHOT) に更新しました。2.xブランチでは追加のCommons IO依存関係を必要とする大規模なリファクタリングが行われたため、Tomcatは1.xブランチの追跡に切り替えました。(markt)
すべてのTomcat JARのJARマニフェストにBundle-License
ヘッダーを追加しました。(markt)
Eclipse JDTコンパイラを4.29に更新しました。(markt)
UnboundIDを6.0.10に更新しました。(markt)
Checkstyleを10.12.3に更新しました。(markt)
Tomcat Nativeを2.0.6に更新しました。(markt)
Commons Poolを2.12.0に更新しました。(markt)
67611: BUILDING.txtのダウンロードリンクを修正しました。(lihan)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
usmazat氏によるロシア語翻訳の改善。(markt)
2023-08-25 Tomcat 11.0.0-M11 (markt)
Catalina
アプリケーションまたはライブラリが500以外のエラーコードとjakarta.servlet.error.exception
リクエスト属性の両方を設定する場合、エラーページ処理中に提供されたエラーコードを使用し、500のエラーコードを想定しないようにしました。(markt)
コードコメントとTomcatの出力を、1024 * 1024バイトにはMiB、1024バイトにはKiBを使用し、MBとkBの代わりに変更しました。(martk)
リクエストパラメータを取得するために使用されるServletRequest
メソッドのJakarta Servlet 6.1 API Javadocの変更に合わせて、HTTPパラメータ処理を更新しました。無効なパラメータや、パラメータサイズまたは数量の制限を超える場合は例外がトリガーされるようになりました。その結果、FailedRequestFilter
は削除されました。(markt)
フォーム認証におけるプロトコル相対リダイレクトを回避しました。(markt)
Webアプリケーション
ドキュメント。ドキュメントを更新し、1024 * 1024バイトにはMiB、1024バイトにはKiBを使用し、MBとkBの代わりに変更しました。(martk)
その他
中国語翻訳の改善。(lihan)
フランス語翻訳の改善。(remm)
tak7iji氏による日本語翻訳の改善。(markt)
2023-08-14 Tomcat 11.0.0-M10 (markt)
Catalina
Coverity Scanによって特定されたDataSourceUserDatabase
における潜在的なデータベース接続リークを修正しました。(markt)
ExtendedAccessLogValve
のパターン解析をより堅牢にしました。(markt)
内部資格情報ハンドラーの構成を永続化しようとした際の失敗を修正しました。(remm)
66680: セッション永続化プロセス中にセッションをシリアル化する際、nullのPrincipalがシリアル化できないという警告をログに記録しないようにしました。tsryo氏によるプルリクエスト#638に基づくものです。(markt)
66822: コネクタインスタンスのログメッセージで、関連するProtocolHandlerインスタンスと同じ命名形式を使用するようにしました。(markt)
部品が最初に解析される場合、部品数もパラメータ解析に使用される実際のmaxParameterCount
を減らすべきです。(remm)
Coyote
NIOコネクタのブロッキング読み取り/書き込みをリファクタリングし、Pollerからの通知が見落とされ、期待される読み取り/書き込みではなくタイムアウトが発生する可能性のあるコードパスを削除しました。(markt)
HTTP/2ストリームまたは接続ウィンドウの更新待ち中に発生するスプリアスなウェイクアップを処理するようにリファクタリングしました。(markt)
ソケットチャネル作成とTLSのためのエンドポイントの拡張性を改善しました。Marco Fargetta氏によるプルリクエスト#639に基づくものです。(remm)
11.0.0-M9で導入されたリグレッションを修正し、SSLHostConfigCertificate
インスタンスのcertificateKeystoreFile
属性のデフォルト値を構築する際に正しい定数を使用するようにしました。(markt)
仮想スレッド使用時の固定化を減らすため、HTTP/2の実装をリファクタリングしました。(markt)
OpenSSLプロファイル(例: PROFILE=SYSTEM
)を参照する暗号スイートを、解析エラーを発生させる代わりにそのまま通過させるようにしました。(remm)
66841: HTTP/2での非同期処理中にエラーが発生した後、AsyncListener.onError()
が呼び出されるようにしました。(markt)
66842: 非同期I/O(デフォルト)を使用する場合、HTTP/2オーバーヘッドカウントの計算にDATAフレームを含め、接続が早期に終了しないようにしました。(markt)
HTTP/2ストリームにレスポンスが書き込まれた後に、不正なRSTメッセージが送信される可能性があった競合状態を修正しました。(markt)
WebSocket
66681: permessage-deflate
を使用して圧縮が有効なバッチメッセージをフラッシュする際に発生するNullPointerException
を修正しました。(markt)
jdbc-pool
testAllIdleがアイドル状態のものを解放する際に、releaseIdleCounter
がインクリメントされない問題を修正しました。Arun Chaitanya Miriappalli氏によるプルリクエスト#241に基づくものです。(lihan)
書き込み中に例外が発生した場合に、ConnectionState
の状態が接続の実際の状態と不整合になる問題を修正しました。Wenjun Xiao氏によるプルリクエスト#643に基づくものです。(lihan)
その他
NSISを3.09に更新しました。(markt)
Checkstyleを10.12.2に更新しました。(markt)
フランス語翻訳の改善。(remm)
日本語翻訳の改善。tak7iji氏およびShirayuking氏による貢献です。(markt)
66829: Java実行ファイルのパスにスペースが含まれる場合に、Windowsでユーザーが意図したとおりに_RUNJAVA
環境変数を使用できるように、引用符の処理を修正しました。(markt)
66834: マニフェストファイル内のOSGi契約参照を、Java EE契約名ではなくJakarta EE契約名を参照するように修正しました。(markt)
Tomcat Nativeを2.0.5に更新しました。(markt)
2023-07-10 Tomcat 11.0.0-M9 (markt)
その他
JSignの依存関係のプロパティを修正しました。(rjung)
未リリース Tomcat 11.0.0-M8 (markt)
Catalina
59232: コンテキスト命名情報の環境エントリを作成するリスナーであるorg.apache.catalina.core.ContextNamingInfoListener
を追加しました。(michaelo)
66665: プロパティファイルからコンテキストのロールマッピングを投入するリスナーであるorg.apache.catalina.core.PropertiesRoleMappingListener
を追加しました。(michaelo)
allowLinking
がfalse
に設定されている場合でも、ウェブアプリケーションが意図的に許可するように作成されていると、ウェブアプリケーション内のシンボリックリンクが辿られてしまうエッジケースを修正しました。(markt)
Context
にユーティリティ設定ファイルのリソース参照を追加し、ウェブアプリケーションからのリソース参照(webapp:
をプレフィックスとする)を可能にし、リソース参照APIをより可視化しました。(remm)
Coyote
66627: MessageBytes.getType()
の文書化された動作を復元し、最新の変換を反映するのではなく、元のコンテンツのタイプを返すようにしました。(markt)
66635: 起動時の証明書ログを修正し、キーストアベースのキー/証明書とPEMファイルベースのキー/証明書を区別し、それぞれに関連情報をログに記録するようにしました。(markt)
Jasper
TomcatのJakarta EL API実装に、jakarta.el.OptionalELResolver
を介してjava.util.Optional
サポートを追加し、Jakarta EL 6.0 APIの最新提案に合わせました。(markt)
JSPコンパイルのコンパイラソースおよび/またはコンパイラターゲットとしてJava 22(値22
を使用)を指定するサポートを追加しました。これらの値をサポートしないEclipse JDTコンパイラバージョンと組み合わせて使用された場合、警告がログに記録され、デフォルトが使用されます。(markt)
WebSocket
WebSocketサーバーのエラー条件処理を改善し、特にTomcatシャットダウン時について改善しました。(markt)
66574: 66574の修正におけるリグレッションを修正しました。これにより、onClose()
イベントが完了する前にWebSocketセッションがonOpen()
に対してfalseを返す可能性がありました。(markt)
Tomcatが提供するWebSocket APIを、Jakarta WebSocketプロジェクトの最新提案と整合させ、SendResult
を介してWebSocket Session
インスタンスを利用できるようにしました。(markt)
Webアプリケーション
ドキュメント。セキュリティガイダンスを拡張し、組み込み使用ケースをカバーし、java.io.tmpdir
システムプロパティの使用に関する注記を追加しました。(markt)
66662: ドキュメント。ダイジェスト認証バルブの構成セクションにおけるalgorithms属性名のタイプミスを修正しました。gohilmca氏によるプルリクエスト#629に基づくものです。(markt)
その他
フランス語翻訳の改善。(remm)
Windows固有のバイナリディストリビューションをMaven Centralにアップロードされるファイルに含めるようにしました。(markt)
Java 21が32ビットWindowsオペレーティングシステムで利用できないため、そのプラットフォームでのTomcat実行のサポートを削除しました。(markt)
日本語翻訳の改善。tak7iji氏による貢献です。(markt)
Eclipse JDTコンパイラを4.28に更新しました。(markt)
UnboundIDを6.0.9に更新しました。(markt)
Checkstyleを10.12.1に更新しました。(markt)
BNDを6.4.1に更新しました。(markt)
JSignを5.0に更新しました。(markt)
2023-06-08 Tomcat 11.0.0-M7 (markt)
一般
最小サポートJavaバージョンをJava 21に引き上げました。(markt)
Catalina
ユーティリティエグゼキュータの管理を、コンポーネントのinit()
/destroy()
メソッドからstart()
/stop()
メソッドに移動しました。(markt)
DoSおよびブルートフォース攻撃を軽減するために使用できるRateLimitFilterを追加しました。(isapir)
TomcatのカスタムWAR URLハンドラにおけるWARファイルとWARコンテンツを分離するための^
文字の使用サポートを削除しました。現在のデフォルトの区切り文字*
は変更されません。(markt)
org.apache.catalina.core.StandardVirtualThreadExecutor
を追加しました。これは、1つ以上のコネクタと組み合わせて、それらのコネクタが仮想スレッドを使用して受信するリクエストを処理できる仮想スレッドベースのエグゼキュータです。(markt)
66513: PersistentValve
にセッションごとのセマフォを追加し、単一のTomcatインスタンス内でセッションごとに並行リクエストが1つ以下であることを保証するようにしました。また、デバッグログを拡張し、リクエストがバルブをバイパスしたかどうか、およびリクエストがセッションごとのセマフォを取得できなかった場合の理由を含めるようにしました。(markt)
66609: デフォルトサーブレットがXML出力を使用する際に、ディレクトリリストのファイル名を正しくエスケープするようにしました。Alex Kachanov氏によるプルリクエスト#621に基づくものです。(markt)
66618: デフォルトサーブレットが生成するXMLディレクトリリストに、XSLTでのソートを可能にする数値形式の最終更新フィールドを追加しました。Alex Kachanov氏によるプルリクエスト#622に基づくものです。(markt)
66621: WebDAVでコレクションをロックしようとすると、子コレクションに期限切れのロックがある場合、誤って失敗する可能性がありました。(markt)
66622: 関連するHTTPヘッダーのサポートがすべての主要なブラウザから削除されたため、HttpHeaderSecurityFilter
からxssProtectionEnabled
設定を削除しました。(markt)
Coyote
66602: SwallowedDataFramePayload呼び出し時にdataLengthがゼロの場合にWINDOW_UPDATEを送信しない問題。ledefe氏によるプルリクエスト#619に基づくものです。(lihan)
その他
Commons Daemonを1.3.4に更新しました。(markt)
フランス語翻訳の改善。(remm)
Checkstyleを10.12.0に更新しました。(markt)
OpenSSL 3.0.9でビルドされたWindowsバイナリを取り込むため、Apache Tomcat Native Libraryのパッケージバージョンを2.0.4に更新しました。(markt)
2023-05-09 Tomcat 11.0.0-M6 (markt)
Catalina
66567: TomcatコードがURLではなくURIを使用するように変換された後に発生するIllegalArgumentException
の欠落を修正しました。(remm)
AccessLogValve
のタイムスタンプ出力で、エスケープが必要なリテラル文字を含むSimpleDateFormat
が使用されている場合に、エスケープするようにしました。(rjung)
AccessLogValve
における垂直タブの出力を\v
から\u000b
に変更しました。(rjung)
AccessLogValve
におけるエスケープのパフォーマンスを約2倍改善しました。(rjung)
JsonAccessLogValve
を改善し、ヘッダーや属性などのより多くのパターンをサポートするようにしました。これらはサブオブジェクトとしてログに記録されます。(rjung)
#613: ファイルロック保護またはマネージャーサーブレットを使用する際に、ファイルコピーが部分的に破損する可能性があった問題を修正しました。Jack Shirazi氏による提案です。(remm)
Coyote
Java 21で導入された新しい文字セットgb18030-2022
のサポートを、文字セットキャッシュメカニズムに追加しました。(markt)
HTTPヘッダー解析のエッジケースを修正し、名前のないHTTPヘッダーが無効として扱われるようにしました。(markt)
HTTPコネクタ設定のrejectIllegalHeader
とallowHostHeaderMismatch
のサポートを削除しました。これらは以前のデフォルトにハードコードされるようになりました。(markt)
66591: 66512の修正で導入されたリグレッションを修正しました。これにより、HTTPヘッダーが設定されていないレスポンスに対してAJP Send Headersが送信されない問題がありました。(markt)
Jasper
66582: ELコンテキストにJSPの静的インポートを追加する際に、ELがJSPよりも静的インポートに対して厳格な要件を持つことを考慮するようにしました。(markt)
WebSocket
66574: WebSocketセッションクローズをリファクタリングし、アプリケーションコードがシミュレートされたブロッキングを使用した場合にデッドロックの潜在的な原因となっていたSocketWrapper
のロックを削除しました。(markt)
66575: 圧縮変換において、ユーザーから提供されたバッファのバッキング配列が未チェックで使用されることを回避しました。(remm)
WebSocketセッションクローズ中にバッチメッセージをフラッシュする際のエラー処理を改善しました。(markt)
66581: AsyncChannelGroupUtil
を更新し、AsynchronousChannelGroupの現在のデフォルトと整合させました。Matthew Painter氏によるプルリクエスト#612に基づくものです。(markt)
その他
フランス語翻訳の改善。(remm)
中国語翻訳の改善。(lihan)
Checkstyleを10.10.0に更新しました。(markt)
Jacocoを0.8.10に更新しました。(markt)
Jakarta EE用Tomcat移行ツールのパッケージ版を1.0.7に更新しました。(markt)
2023-04-19 Tomcat 11.0.0-M5 (markt)
Catalina
RFC 5789で定義されているHTTP PATCH
メソッドをサポートするために、HttpServlet
にdoPatch
メソッドを追加しました。これはServlet 6.1 APIの変更点の一つです。(markt)
65995: RFC 9239を実装し、JavaScriptのメディアタイプとしてapplication/javascript
ではなくtext/javascript
を使用するようにしました。(markt)
Tomcatは起動時にjava.protocol.handler.pkgs
システムプロパティを設定しなくなりました。ユーザーは希望に応じてこのプロパティを自由に構成できます。(markt)
JSON形式を使用するアクセスログバルブを追加しました。Thomas Meyer氏によるプルリクエスト#539に基づくものです。(remm)
フォーム認証プロセスがセッションを作成する場合に、セッションタイムアウトを短縮することでDoS攻撃に対するフォーム認証プロセスを強化しました。このタイムアウト期間は、フォーム認証器のauthenticationSessionTimeout
属性で構成されます。(markt)
クライアントにリダイレクトを送信する際に追加の制御を提供する新しいServlet APIメソッドを実装しました。(markt)
RFC 7616に合わせるためにダイジェスト認証のサポートを更新しました。これにより、DigestAuthenticator
に新しい設定属性algorithms
が追加され、デフォルトはSHA-256,MD5
となります。(markt)
maxParameterCount
のデフォルト値を10,000から1,000に削減しました。(markt)
66527: Tomcat.addWebapp()
メソッドのJavadocで、docBase
パラメータが相対パスであると誤って記載されていた点を修正しました。(markt)
66524 WebResourceキャッシュにおけるエビクション順序を意図したLRUに修正しました。(schultz)
RealmBase
にカスタムユーザー属性のサポートコードを追加しました。Carsten Klein氏による#473のコードに基づくものです。(remm)
TRACE
リクエストへの応答を生成する際にスキップすべき、機密とみなされるHTTPリクエストヘッダーのセットを拡張しました。これはServlet 6.1仕様の現在のドラフトと整合しています。(markt)
66541: カスタムURLスキームを使用するリソースのキャッシュされたリソースの処理を改善しました。存在する場合、スキーム固有のequals()
およびhashCode()
アルゴリズムがこれらのリソースのURLに使用されるようになりました。これにより、一部のOSGiカスタムURLスキームで、構成によっては遅いDNSルックアップをトリガーする可能性のあるパフォーマンス問題が解決されます。Tom Whitmore氏から提供されたパッチに基づくものです。(markt)
ウェブアプリケーションの一部としてデプロイされたカスタムセッションマネージャーを使用する際、リクエストから抽出されたセッションIDを検証する際にClassNotFoundException
が発生するのを回避しました。(markt)
66543: StandardContext#fireRequestDestroyEvent
に独自のログメッセージを割り当てました。(fschumacher)
66554: サーバー初期化中にRandomを初期化し、一部のプラットフォームでウェブアプリケーションコンテキストにおけるJVMスレッドの作成を防ぐようにしました。(remm)
サーバーユーティリティエグゼキュータを、org.apache.tomcat.util.threads.ScheduledThreadPoolExecutor
という名前のサーブレットコンテキスト属性を使用してウェブアプリケーションで利用できるようにしました。(remm)
Coyote
JSONフィルタは、RFC 8259で定義されている一般的な特殊文字に対する特定のエスケープをサポートすべきです。Thomas Meyer氏が提出したコードに基づくものです。(remm)
66511: GzipOutputFilter
(圧縮されたHTTPレスポンスに使用)をダイレクトバッファとともに使用する際の修正。Arjen Poutsma氏が提案したパッチに基づくものです。(markt)
66512: AJPにおける無効なHTTPレスポンスヘッダーの処理(現在はレスポンスから削除される)をHTTPと整合させました。(markt)
66530: バグ66442の修正におけるリグレッションを修正しました。これにより、レスポンスボディを持たないストリームが完了時にアクティブストリームカウントを減らさず、一部の接続でERR_HTTP2_SERVER_REFUSED_STREAM
が発生していました。(markt)
javax.security.cert
パッケージ内の非推奨クラスの使用を削除しました。Eirik Bjorsnos氏によるプルリクエスト#608に基づくものです。(markt)
Jasper
LambdaExpression
を関数型インターフェース呼び出しに強制する一部のインスタンスが失敗するバグを修正しました。(markt)
66536: タグファイルの解析を修正し、一部のタグファイルでタグディレクティブが無視される可能性があった問題を修正しました。(markt)
EL実装をJakarta EL仕様の最新の変更と整合させ、ArrayELResolver
にlength属性のサポートを追加しました。(markt)
クラスター
66535: FarmWarDeployer
のmaxValidTime
属性を再定義し、転送されたファイルの一部を受信してから転送がキャンセルされ、関連リソースがクリーンアップされるまでの最大許容時間としました。ファイル転送がキャンセルされた場合、新しい警告メッセージがログに記録されます。(markt)
WebSocket
66508: NIO2でWebSocketを使用する際、書き込み中にI/Oエラーが発生した場合、クローズフレームを送信する前にタイムアウトを待つのを回避しました。(markt)
66548: WebSocket接続を開始するHTTPアップグレードリクエストにおけるSec-Websocket-Key
ヘッダーの検証を強化しました。値はデコードされませんが、正しい長さであることと、base64アルファベットの有効な文字のみが使用されていることがチェックされます。(markt)
Webアプリケーション
66542: ドキュメント。JNDIのドキュメントを更新し、JavaMailへの参照をJakarta Mailへの参照に置き換えました。(markt)
その他
フランス語翻訳の改善。(remm)
日本語訳の改善。Shirayukingとtak7ijiの貢献による。(markt)
中国語訳の改善。totooの貢献による。(markt)
MD5Encoder
を使用しているコードをHexUtils.toHexString()
を使用するようにリファクタリングしました。(markt)
66507: catalina.sh
でversion
を呼び出す際に$JAVA_OPTS
がJVMに渡されないバグを修正しました。Eric Hamilton氏がパッチを提案。(lihan)
Commons DBCPの内部フォークをf131286 (2023-03-08, 2.10.0-SNAPSHOT)に更新しました。これにより、11.0.0-M2で導入されたリグレッションが修正されます。(markt)
JRE_HOME
またはJAVA_HOME
が正しく設定されていない場合のエラーメッセージを改善しました。Windowsでは、起動スクリプトとサービスインストールスクリプトにおけるJRE_HOME
とJAVA_HOME
の扱いを合わせました。(markt)
Eclipse JDTコンパイラーを4.27に更新しました。(markt)
UnboundIDを6.0.8に更新しました。(markt)
Checkstyleを10.9.3に更新しました。(markt)
Jacocoを0.8.9に更新しました。(markt)
PEMFileをInputStreamからロードできるように拡張しました。Romain Manni-Bucau氏がパッチを提供。(schultz)
2023-03-06 Tomcat 11.0.0-M4 (markt)
一般
SynchronizedStack
におけるメモリ割り当てが制限よりも大きくなるバグを修正し、メモリフットプリントを削減しました。(lihan)
Catalina
mod_rewriteのtxt:
およびrnd:
リライトマップタイプをサポートしました。Dimitrios Soumis氏が提供したプルリクエスト#591に基づく。(remm)
CONNECTメソッドを使用するHTTPリクエストを拒否する際に、より適切な応答(400ではなく501)を提供するようにしました。(markt)
66491: Tomcatが使用するカスタムURLプロトコルハンドラーをロードするためのServiceLoaderメカニズムの使用への切り替えを元に戻しました。元のシステムプロパティベースのアプローチが復元されました。(markt)
Coyote
HTTP/2におけるスキーム疑似ヘッダーの有効性のチェックを追加しました。(markt)
66482: NIO2での非同期操作後にインライン状態を復元し、実装によって予期しない例外がスローされる場合があることを考慮するようにしました。zhougang氏がパッチを提出。(remm)
Jasper
java.beans
パッケージに依存しないJavaBeansサポートのサブセット実装を提供しました。これは、java.desktop
モジュール(java.beans
パッケージが存在する場所)が利用できない場合にExpression Languageで使用されます。(markt)
2023-02-23 Tomcat 11.0.0-M3 (markt)
一般
サポートされる最小JavaバージョンをJava 17に引き上げました。Jakarta EE 11では最小Javaバージョンが21であることが許可されていることに注意してください。Tomcat 11の最小Javaバージョンは、最初の安定版リリース前にJava 21に引き上げられる可能性があります。(markt)
Catalina
コンテキストにマップできないリクエストからValveがCookieにアクセスできるようにしました。(markt)
Charset
オブジェクトを受け入れる文字エンコーディング設定のための新しいServlet APIメソッドを実装しました。(markt)
RFC 9110のセクション9.3.2に従い、デフォルトのHEAD応答には、コンテンツ生成時にのみ値が決定される一部のHTTPヘッダーフィールドが含まれなくなりました。(markt)
66438: JPMSメタデータ内のJakartaモジュールの名前を修正しました。(markt)
Tomcatが使用するカスタムURLプロトコルハンドラーをロードするためにServiceLoaderメカニズムを使用するように切り替えました。(markt)
サーブレットのリクエスト数とエラー数を追跡するために、AtomicInteger
ではなくLongAdder
を使用するように切り替えました。(markt)
Jakarta Servletプロジェクトからの明確化を実装し、コンテキストルートにマップされたサーブレットは、末尾の/
があるかないかにかかわらず、コンテキストルートへのリクエストにマップされるべきであることを実現しました。(markt)
Jakarta Servletプロジェクトからの明確化を実装し、非ブロッキングモードのストリームでServletOutputStream.close()
を呼び出すと、ストリームが実質的に閉じられてすぐに戻り、残りの書き込みデータはコンテナによってバックグラウンドで書き込まれるようにしました。(markt)
不良なJAR URLからのスキャン時に発生しうるISEを回避し、ISEを捕捉していたJava 9+のリフレクションコード削除前の動作を復元しました。(remm)
正規表現が使用されていないString.replaceAll()
の使用箇所をString.replace()
を使用するようにリファクタリングしました。Andrei Briukhov氏がプルリクエスト#581を提供。(markt)
外部Webサーバーからのリダイレクトまたはプロキシを許可するエラーレポートバルブを追加しました。Max Fortun氏が提供したプルリクエスト#506からのコードとアイデアに基づく。(remm)
66470: RemoteIpFilter
とRemoteIpValve
の内部プロキシを識別するために使用される正規表現に、RFC 6598 (100.64.0.0/10) で定義された共有アドレス空間を追加しました。(markt)
66471: RemoteIpFilter
がこのリクエストがセキュアチャネル経由で送信されたと判断した場合に、JSessionId secure属性が欠落するバグを修正しました。(lihan)
Jakarta ServletプロジェクトがServlet 6.1 APIのために定義した追加のHTTPステータスコード定数をHttpServletResponse
に追加しました。(markt)
Jakarta Servletプロジェクトからの明確化を実装し、HttpServletResponse
のHTTPヘッダー値を設定するメソッドのいずれかを新しいヘッダー値としてnull
で呼び出すと、その名前の既存のヘッダーが削除されるようにしました。(markt)
Coyote
Tomcat起動時に、設定されている各TLS証明書の基本情報をログに記録するようにしました。(markt)
66442: HTTP/2応答にボディを含めるべきでない場合、ヘッダーフレームにストリーム終了フラグが設定され、データフレームが送信されないようにしました。(markt)
useAsyncIO=true
(デフォルト)で構成されたコネクターを使用している場合に、HTTP/2接続がタイムアウトするのを妨げていたバグを修正しました。(markt)
設定されたTLS証明書のロギングのために、専用ロガー(org.apache.tomcat.util.net.NioEndpoint.certificate
/ org.apache.tomcat.util.net.Nio2Endpoint.certificate
)を提供しました。(markt)
Jasper
66419: 引数が1つしか渡されなかった場合に、可変引数を受け入れるメソッドへの式言語からの呼び出しを修正しました。(markt)
66441: JSPにおける静的フィールドのインポートを、ページで使用される任意のEL式から参照できるようにしました。(markt)
Webアプリケーション
66429: ドキュメント。ドキュメントウェブアプリケーションへのアクセスをデフォルトでlocalhostに制限しました。(markt)
66429: サンプル。サンプルウェブアプリケーションへのアクセスをデフォルトでlocalhostに制限しました。(markt)
その他
BNDを6.4.0に更新しました。(markt)
SecurityManager下でのTomcat起動のサポートを削除しました。(markt)
中国語翻訳の改善。(lihan)
フランス語翻訳の改善。(remm)
日本語翻訳の改善。tak7iji氏による貢献です。(markt)
韓国語訳の改善。(woonsan)
Apache Tomcat Native Libraryのパッケージバージョンを2.0.3に更新し、OpenSSL 3.0.8でビルドされたWindowsバイナリを取り込みました。(markt)
未リリース Tomcat 11.0.0-M2 (markt)
Catalina
ServletInputStream
およびServletOutputStream
クラスをServlet APIで更新し、Jakarta Servlet仕様の最近の更新に合わせてByteBuffer
sを使用した読み書きをサポートするようにしました。この変更により、Servletの非ブロッキングAPIの様々な側面も明確化されました。(markt)
66388: URL
コンストラクタの使用を置き換えるリファクタリングで導入されたリグレッションを修正しました。このリグレッションは、URIパスで使用する際にエスケープが必要な文字を名前に含むリソースのルックアップを壊していました。(markt)
66392: AccessLogValve
のファイルエンコーディングのデフォルト値をUTF-8に変更し、ドキュメントを更新しました。(lihan)
66393: ExtendedAccessLogValve
のx-P(XXX)をドキュメントと整合させました。(lihan)
Jakarta EE 9でJakarta EEプラットフォームから削除されたJAX-RPCのサポートを削除しました。(markt)
Coyote
Cookieのパースと処理を更新し、RFC 6265で要求され、RFC 6265bisで明示的に明確化されているように、引用符で囲まれたCookie値内の引用符を値の一部として扱うようにしました。(markt)
RFC 8941構造化フィールドパーサーを追加しました。(markt)
RFC 9218で定義されているpriority
HTTPヘッダーフィールドのパーサーを追加しました。(markt)
リクエストが完全に読み取られる前に最終応答が生成されたためにHTTP/2ストリームがリセットされる場合、クライアントが応答を破棄しないようにHTTP/2エラーコードNO_ERROR
を使用するようにしました。Lorenzo Dalla Vecchia氏の提案に基づく。(markt)
66385: HTTP/2において、NIO2コネクタによる新しいフレームの非ブロッキング読み取りが、誤って読み取りタイムアウトを使用して行われ、予期しないストリームのクローズにつながるバグを修正しました。(markt)
Jasper
66370: org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED
システムプロパティのデフォルトをtrue
に変更しました。ただし、ELライブラリがTomcat上で実行されている場合はデフォルトはfalse
のままです。これは、ELライブラリがすでに特権ブロック内から呼び出されており、不要な特権ブロックをスキップすることでパフォーマンスが向上するためです。(markt)
JSPコンパイルのコンパイラソースおよび/またはコンパイラターゲットとしてJava 21(値21
)を指定するサポートを追加しました。これらの値をサポートしないEclipse JDTコンパイラバージョンで使用された場合、警告がログに記録され、デフォルトが使用されます。(markt)
その他
Apache Tomcat Migration Tool for Jakarta EEのパッケージバージョンを1.0.6に更新しました。(markt)
Apache Commons BCELの内部フォークを2ee2bff (2023-01-03, 6.7.1-SNAPSHOT)に更新しました。(markt)
Apache Commons Codecの内部フォークを3eafd6c (2023-01-03, 1.16-SNAPSHOT)に更新しました。(markt)
Apache Commons FileUploadの内部フォークを34eb241 (2023-01-03, 2.0-SNAPSHOT)に更新しました。(markt)
Apache Commons DBCPの内部フォークをf131286 (2023-01-03, 2.10.0-SNAPSHOT)に更新しました。(markt)
日本語訳の改善。Shirayukingの貢献による。(markt)
ポルトガル語訳の改善。Guilherme Custódioの貢献による。(markt)
Eclipse JDTコンパイラーを4.26に更新しました。(markt)
Checkstyleを10.6.0に更新しました。(markt)
Unboundidを6.0.7に更新しました。(markt)
SpotBugsを4.7.3に更新しました。(markt)
2022-12-05 Tomcat 11.0.0-M1 (markt)
一般
このリリースには、Apache Tomcat 10.1.1までのすべての変更に加えて、以下の追加の変更が含まれています。(markt)
Catalina
66175: BasicAuthenticator
が使用するデフォルトの文字セットをISO-8859-1からUTF-8に変更しました。(markt)
66209: JARファイルのインデックス付けに使用されるブルームフィルターが、Webアプリケーションの存続期間中保持されることを許可する構成オプションを追加しました。この追加以前は、インデックスはWebResourceRoot.gc()
の定期的な呼び出しによって常にフラッシュされていました。この追加の一環として、アーカイブインデックスの構成がContext
からWebResourceRoot
に移動しました。Rahul Jaisimha氏が提供したパッチに基づく。(markt)
66330: 62897の修正時に導入されたリグレッションを修正しました。これにより、Context
のskipMemoryLeakChecksOnJvmShutdown
に設定された値が無視され、常にデフォルトが使用されていました。(markt)
66331: SystemLogHandler
のStack
のリファクタリングにおけるリグレッションを修正しました。これは誤った例外を捕捉していました。(lihan)
66338: ErrorReportValve
のリファクタリングにおける微妙な違いを引き起こしたリグレッションを修正しました。(lihan)
JsonErrorReportValve
の出力を構築するために使用される値をエスケープし、常に有効なJSONを出力するようにしました。(markt)
HttpServletRequest.isTrailerFieldsReady()
のデフォルト実装をtrue
を返すように修正し、HttpServletRequest.getTrailerFields()
のデフォルト実装およびJakarta EEプロジェクトによって提供されるServlet APIと整合するようにしました。(markt)
WebappLoader
をリファクタリングし、クラスがロードされる際にコンバータを使用するように設定されている場合にのみ、Jakarta EE移行ツールへのランタイム依存関係を持つようにしました。(markt)
サーブレットコンテキストに設定される資格情報ハンドラー属性の動作を改善し、認証中に実際に使用されるものを反映するようにしました。(remm)
66359: RemoteIpValveおよびRemoteIpFilterのJavadocを、正しいprotocolHeader
デフォルト値「X-Forwarded-Proto」で更新しました。(lihan)
エラーディスパッチの新しい属性jakarta.servlet.error.query_string
のサポートを追加しました。(markt)
Context
のignoreAnnotation
属性を更新し、metadata-complete
から切り離しました。(remm)
Coyote
HTTPクッキーのexpires属性で使用される日付形式を修正しました。RFC 6265に準拠するため、日、月、年の各コンポーネントを区切るには、単一のダッシュではなく単一のスペースを使用する必要があります。(markt)
書き込みが許可されていない状態のストリームに書き込もうとしてストリームがキャンセルされた場合、エラーメッセージに現在のストリーム状態の名前を含めるようにしました。(markt)
NIO書き込みは-1を返さないため、CLOSED_NIO_CHANNEL
がそうしないようにリファクタリングし、この戻り値のチェックを削除しました。tianhuang氏による#562に基づく。(markt)
asyncTimeout
を、それを使用しないコンポーネントに公開していた不要なコードを削除しました。(markt)
すべてのMessageBytes
からバイト配列への変換が、設定された文字セットに対して有効であることを確認し、有効でない場合は例外をスローするようにしました。(markt)
HTTP/2ストリームがリセットされた場合、現在の有効ストリーム数が減少しませんでした。接続上で十分なリセットが発生した場合、現在の有効ストリーム数制限に達し、その接続上で新しいストリームを作成できなくなっていました。(markt)
Jasper
66294: 62080に対処するために追加された、スレッドコンテキストクラスローダーを取得するための特権ブロックの使用をオプションとし、デフォルトで無効にしました。これは現在、org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED
システムプロパティによって制御されます。(markt)
66317: Lambda強制セキュリティマネージャーの特権不足を修正しました。Isaac Rivera Rivas氏によるプルリクエスト#557に基づく。(lihan)
66325: ラムダ式を含む式言語の評価における同時実行性の問題を修正しました。(markt)
JSP APIのErrorData
クラスを、新しいエラーディスパッチ属性jakarta.servlet.error.query_string
をサポートするためのJakarta Pages仕様の最近の変更に合わせて更新しました。(markt)
Webアプリケーション
66348: クラスローダーのドキュメントに記載されているJARを更新し、オプションのものを明記しました。(markt)
ドキュメント。アプリケーション開発者ガイドにおけるCVSへの参照を、より一般的なソースコード管理システムへの参照に置き換えました。(markt)
jdbc-pool
66346: すべてのJDBCプールJARが再現可能であることを確認しました。John Neffenger氏がプルリクエスト#566を提供。(markt)
その他
Commons Daemonを1.3.3に更新しました。(markt)
66323: 最小Javaバージョンが11となり、これらのオプションが常に必須となったため、モジュール起動パラメータをJDK_JAVA_OPTIONS
からJAVA_OPTS
に移動しました。(markt)
中国語訳の改善。DigitalCatとlihanの貢献による。(markt)
フランス語訳の改善。Mathieu Bouchardの貢献による。(markt)
日本語訳の改善。Shirayukingとtak7ijiの貢献による。(markt)
韓国語翻訳の改善。 (markt)
スペイン語訳の改善。(markt)
APRコネクタの削除におけるリグレッションを修正しました。これによりGraalネイティブイメージのサポートが壊れていました。Sébastien Deleuze氏がプルリクエスト#564を提供。(markt)
Apache Tomcat Native Libraryのパッケージバージョンを2.0.2に更新し、OpenSSL 3.0.7でビルドされたWindowsバイナリを取り込みました。(markt)
Apache Tomcat Migration Tool for Jakarta EEのパッケージバージョンを1.0.5に更新しました。(markt)
URLコンストラクタの使用を置き換えるためにコードベースをリファクタリングしました。Java 20以降では非推奨ですが、非推奨の理由はすべてのバージョンで有効であるため、今それらから移行します。(markt)
意図しない非Tomcatリソースが含まれないように、Tomcatネイティブイメージメタデータを洗練しました。Sébastien Deleuze氏がプルリクエスト#569を提供。(markt)
Apache Commons BCELの内部フォークをb015e90 (2022-11-28, 6.7.0-RC1)に更新しました。(markt)
Apache Commons Codecの内部フォークをae32a3f (2022-11-29, 1.16-SNAPSHOT)に更新しました。(markt)
Apache Commons FileUploadの内部フォークをaa8eff6 (2022-11-29, 2.0-SNAPSHOT)に更新しました。(markt)