Spring Bootのサーブレットコンテナを変更する
はじめに
そもそも
サーブレットコンテナなにがあるの??
- ざっくり分類すると下記の5系統になります
Tomcat
Jetty
WebLogic/GlassFish
JBoss/WildFly/Undertow
WebSphere/LibertyProfile
- IBM製
- WebSphereが商用
実装してみる
- ここからは実際にSpringでサーブレットコンテナを変更してみます
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.2.2.RELEASE" id("io.spring.dependency-management") version "1.0.8.RELEASE" kotlin("jvm") version "1.3.61" kotlin("plugin.spring") version "1.3.61" } group = "com.example" version = "0.0.1-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_1_8 repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") { } implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") testImplementation("org.springframework.boot:spring-boot-starter-test") { exclude(group = "org.junit.vintage", module = "junit-vintage-engine") } } tasks.withType<Test> { useJUnitPlatform() } tasks.withType<KotlinCompile> { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") jvmTarget = "1.8" } }
デフォルトの設定だと、こんな感じになっていると思います。
spring-boot-starter-web
は何も指定しないと、Tomcatが立ち上がります。
- これをJettyに変更してみます
dependencies { implementation("org.springframework.boot:spring-boot-starter-web") { exclude(group = "org.springframework.boot", module = "spring-boot-starter-tomcat") } implementation("org.springframework.boot:spring-boot-starter-jetty")
- Jettyが立ち上がりました
- 同じ要領でUndertowを指定もできました
- 現在のところ、上記の3つのみSpringからは呼び出せるようです。
まとめ
- Servlet Containerがせっかく選択できるので、ケースに合わせた選択をしたいですね