ScalatraのサンプルアプリケーションやGitBucketでは開発にxsb-web-pluginというJava Servletアプリケーション開発を支援するsbtプラグインを使っています。
ですが、標準でサポートされているのはJetty 9.4(Servlet 3.1)およびTomcat 9.0(Servlet 4.0)となっています。パッケージ名が javax.servlet
から jakartaee.servlet
に変更されたServlet 5.0に対応したプラグインは今のところ提供されていません。
ただし、xsb-web-pluginはカスタムコンテナもサポートしているのでbuild.sbtに以下の設定を追加することでJetty 11(Servlet 5.0)を使用することができます。
// カスタムコンテナとしてJetty 11を使用 enablePlugins(ContainerPlugin) Container / containerLibs := Seq(("org.eclipse.jetty" % "jetty-runner" % "11.0.11").intransitive()) Container / containerMain := "org.eclipse.jetty.runner.Runner"
以下のようにして起動します。
sbt ~container:start
ちなみにxsbt-web-pluginはTomcatのサポートに関してはHerokuのwebapp-runnerを使用しており、このwebapp-runnerのサポートが現状ではTomcat 9までとなっているようです。Tomcatでも埋め込みサーバ用のライブラリが提供されているのでランチャーを自作すればTomcat 10を使用してServlet 5の開発ができそうです。
今となってはScalaでServletアプリケーションを開発するのは少数派と思いますが、GitBucketではJGitのGitServletを使っている関係で今後もServletを使わざるを得ないのでxsbt-we-pluginでもServlet 5対応コンテナを正式にサポートしてほしいところです。