読者です 読者をやめる 読者になる 読者になる

Spring Boot で組み込みサーブレットコンテナを変更する

java

Spring Boot で 1.2.3 をそのまま起動した場合は Tomcat 8 が起動する。

s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService   : Starting service Tomcat
org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.20
...
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

他には下記の表のものを使えるとのこと。

Servlet Containers - Spring Boot Reference Guide f:id:nise_nabe:20150505002416p:plain

この組み込みサーブレットコンテナを tomcat -> jetty や tomcat -> undertow に変更する。

tomcat -> jetty

参照ページ: Use Jetty instead of Tomcat - Spring Boot Reference Guide

tomcat を外して jetty を追加する設定を記述する。下記は Gradle での記述例。(参照ページではバージョンが付いてるが手元では 1.2.3 を使っていたので念のため外してる)

configurations {
    compile.exclude module: "spring-boot-starter-tomcat"
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-jetty")
    // ...
}

gradle の bootRun を実行するとどこかしらに下記のようなログが出力されて jetty が起動してることがわかる。

org.eclipse.jetty.server.Server          : jetty-9.2.9.v20150224
...
.s.b.c.e.j.JettyEmbeddedServletContainer : Jetty started on port(s) 8080 (http/1.1)

tomcat -> undertow

参照ページ: Use Undertow instead of Tomcat - Spring Boot Reference Guide

tomcat を外して undertow を追加する設定を記述する。下記は Gradle での記述例。(参照ページではバージョンが付いてるが手元では 1.2.3 を使っていたので念のため外してる)

configurations {
    compile.exclude module: "spring-boot-starter-tomcat"
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-undertow")
    // ...
}

gradle で bootRun を実行するとどこかしらに下記のようなログが出てきて undertow が起動してることがわかる。tomcat や jetty のようにどこかしらにバージョン情報は出てこない。( XNIO のバージョンは出てくる)

b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http)