長年間稼働するシステムのOS移行とともに、tomcatを9から11にもバージョンアップしようとします。javaxとjakartaの切り替えの対応をやって、リリースしましたが、初日エラーが発生して大騒ぎになりました。
内容からみると、URLのパラメータに不備があって、ディコード時エラーが発生しているようです。確かに特別な事情のためエンコード後のURLを切断する加工がありますが、そのパラーメータはシステムに利用していないです。昔もjavaxのプログラムにもこのようなエラーが発生しません。同じjakartaのプログラムですが、tomcat10だったらエラーが発生しません。ちょっと不思議です。
apache-tomcat-10.1.35とapache-tomcat-11.0.0のソース比較をしてみました。org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:350)の場所に、InvalidParameterExceptionを追加されているとわかりました。
つまり、不備項目を持つURLから何かのパラメータを取得する場合、tomcat10以前の場合、なにもエラーが発生しませんが、tomcat11からエラーが発生するようになります。