GMOアドマーケティングのT.Kです。
Java 11へのアップグレードについては私より詳しい方が記事を投稿する事を信じて
Tomcat 9へのアップグレードで対応した箇所をまとめます。
DBCP設定パラメータの変更
context.xmlのResource設定を修正します。
旧 | 新 | 内容 |
maxActive | maxTotal | コネクションの最大数 |
maxWait | maxWaitMillis | 接続プールの最大待機時間 |
removeAbandoned | removeAbandonedOnBorrow removeAbandonedOnMaintenance |
コネクションのクローズ漏れ検知 |
サブドメイン間のCookieの共有
RFC2109では、サブドメイン間でCookieを共有するためには、ドメインの先頭にドットを付ける仕様でした。
RFC6265で先頭にドットを付ける必要がなくなり、ドットを付けるとIllegalArgumentExceptionが発生します。
java.lang.IllegalArgumentException: An invalid domain [.example.com] was specified for this cookie
すぐに対応が出来ない場合は、context.xmlで旧仕様のCookieを使うように設定を追記する事で回避する事が出来ます。
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
クエリパラメータで使用できない文字
CVE-2016-6816の脆弱性対応で、エンコードされていない
|{} を含むクエリパラメータを受け付けなくなりました。
requestTargetAllowによる回避は出来ません。リクエスト元でエンコードを徹底する。
まとめ
Tomcat対応は思いの外少なくて済んだのですが
Java 11へのアップグレードと同時に行った関係で、問題の切り分けで苦労しました。
Tomcat→Javaの順にアップグレートした方が楽だったのかもしれません。