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 フォルダに移動して実行します。

  1. catalina.bat run (Windowsの場合)

  2. catalina.sh run (Unixベースのシステム上)

    1. 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]から入手可能です。