spirng-bootには組み込みコンテナがあるので、開発時にアプリケーションサーバ上で動かしたいケースはアンマリ無いが、一応メモ。といっても、jarからwarに変更する際の手順をやればよいだけ。参照:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file
まず、プロジェクト右クリック -> config -> Converted to faceted formでDynamic Web Moduleにチェックを入れて、プロジェクトをdynamic web project扱いにする。
従来のspring-mvcとかではWebApplicationInitializerのサブクラスを自前で作ったりしていたが、それのspring-boot版のSpringBootServletInitializerを継承したクラスを作る。リファレンスのサンプルではspring-bootのmain置いてるクラスに継承させているが、役割的に同じだからなのだろう。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
pom.xmlのpackagingをjarからwarに修正する。
<packaging>war</packaging>
このまま起動すると、tomcatの組み込みコンテナが邪魔してAPサーバが起動しない。ので、その依存性をprovidedにする。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies>
これで起動する。動作確認はwildfly 10で行った。