SpringBoot2.2.4の内蔵TomcatでSSIServletを使う


対象読者

SpringBootを使ったWebサービスを開発しており、内蔵Tomcatを利用している。
また、SSI (Server Side Include) を利用しているため、SSIServletを使用している。

TL;DR

Tomcat 9.0.30ではSSI関連のモジュールが外部ライブラリ化していますので、
以下のTomcat SSIライブラリも依存関係に追加しなければならなくなりました。

経緯

JVNVU#98104709 Apache Tomcat の複数の脆弱性に対するアップデート
http://jvn.jp/vu/JVNVU98104709/index.html
により、SpringBootの内蔵Tomcatをバージョンアップする必要が出てきました。

そこで、SpringBootのバージョンを最新のリリースバージョン2.2.4.RELEASEへと更新することにしました。

SpringBoot 2.2.4RELEASEの内蔵Tomcatのバージョン

公式ドキュメントによると、内蔵されたTomcatのバージョンは9.0.30です。

Tomcat 9.0.30では、SSI関連モジュールが外部ライブラリ化されている!

ここで、Tomcat 9.0.30のChangeLogを参照すると、

Moved server-side include (SSI) module into a separate JAR library. (schultz)

と記載されています。

実際にbuild.gradleファイルにてSpringBootのバージョンを2.2.4.RELEASEへと変更すると、
SSIServletが見つからなくなり、ビルドできなくなります。

どこに移動したかが書いていないので、MVN Repositoryを探索しました。

Tomcat SSIライブラリに分割されていた

MVN Repository内にて、Tomcat SSIライブラリを発見しました。

Spring Bootの内蔵Tomcatにバージョンをあわせて9.0.30を選択して、build.gradledependenciesに追加したところ、問題なくSSIServletを見つけられるようになり、ビルドが通りました。

まとめ

本記事では、Spring Boot 2.2.4.RELEASE内蔵のTomcat 9.0.30にて、SSIを使用するための依存ライブラリを紹介しました。

お役に立てれば幸いです。