Spring Boot WARをTomcatサーバーにデプロイする
1.はじめに
Spring Boot
はhttps://en.wikipedia.org/wiki/Convention
over
configuration[configuration over configuration]フレームワークであり、これを使用して実稼働対応のセットアップをセットアップできます。
Tomcat
は、最も人気のあるJavaサーブレットコンテナの1つです。
デフォルトでは、Spring Bootはデスクトップアプリケーションとして実行することもシステムサービスとして設定することもできるスタンドアロンのJavaアプリケーションを構築しますが、新しいサービスをインストールしたりアプリケーションを手動で実行できない環境もあります。
スタンドアロンアプリケーションとは反対に、Tomcatは同じアプリケーションプロセス内で複数のアプリケーションを管理できるサービスとしてインストールされ、各アプリケーションに特定の設定をする必要がありません。
このガイドでは、簡単なSpring Bootアプリケーションを作成し、それをTomcat内で動作するように調整します。
2. Spring Bootアプリケーションの設定
利用可能なスターターテンプレートの1つを使用して、シンプルなSpring Boot Webアプリケーションをセットアップします。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
-
Spring Bootはデフォルトの設定を処理するので、標準の@ @ SpringBootApplication__以外に追加の設定は必要ありません。
有効なコンテンツを返すための単純なREST EndPointを追加します。
@RestController
public class TomcatController {
@GetMapping("/hello")
public Collection<String> sayHello() {
return IntStream.range(0, 10)
.mapToObj(i -> "Hello number " + i)
.collect(Collectors.toList());
}
}
それでは、
mvn spring-boot:run
を使用してアプリケーションを実行し、
http://localhost:8080/hello
でブラウザを起動して結果を確認しましょう。
3. Spring Boot WARの作成
サーブレットコンテナは、アプリケーションがいくつかの契約を満たすことが期待されています。 Tomcatの場合、この契約はhttps://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html[Servlet API 3.0]です。
私たちのアプリケーションがこの契約を満たすようにするために、私たちはソースコードにいくつかの小さな修正を行わなければなりません。
まず、JARの代わりにWARアプリケーションをパッケージ化する必要があります。このために、
pom.xml
を次の内容に変更します。
<packaging>war</packaging>
それでは、最後の
WAR
ファイル名を変更してバージョン番号を含めないようにしましょう。
<build>
<finalName>${artifactId}</finalName>
...
</build>
それでは、Tomcatの依存関係を追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
最後に、
SpringBootServletInitializer
インターフェース____を実装することによって、Tomcatに必要なサーブレットコンテキストを初期化します。
@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}
Tomcatにデプロイ可能なWARアプリケーションを構築するために、
vvクリーンパッケージを実行します。その後、WARファイルが
target/spring-boot-tomcat.war
に生成されます(Maven
artifactId__が“ spring-boot-tomcat”であると仮定して)。
この新しい設定により、Spring Bootアプリケーションは非スタンドアロンアプリケーションになります(再度スタンドアロンモードで動作させる場合は、Tomcat依存関係から
provided
スコープを削除してください)。
4. TomcatへのWARのデプロイ
WARファイルをTomcatにデプロイして実行するには、次の手順を完了する必要があります。
Apache Tomcat]それを
tomcat
フォルダに解凍します。
。 WARファイルを
target/spring-boot-tomcat.war
から次のディレクトリにコピーします。
tomcat/webapps/
フォルダ
。端末から
tomcat/bin
フォルダに移動して実行します。
-
catalina.bat run
(Windowsの場合) -
catalina.sh run
(Unixベースのシステム上)-
http://localhost:8080/spring-boot-tomcat/hello
にアクセスしてください.
-
これは簡単なTomcatの設定でした。完全な設定ガイドについては、/tomcat[Tomcatのインストール]のリンクのガイドを確認してください。リンクの追加の方法もあります:/tomcat-deploy-war[WARファイルをTomcatにデプロイする]。
5.まとめ
この短いガイドでは、簡単なSpring Bootアプリケーションを作成し、それをTomcatサーバーにデプロイ可能な有効なWARアプリケーションに変えました。
いつものように、例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/spring-boot-ops[over on GitHub]から入手可能です。