Spring Boot WARをTomcatサーバーにデプロイする

Spring Boot WARをTomcatサーバーにデプロイする

1. 前書き

Spring Bootconvention over configurationフレームワークであり、Springプロジェクトの本番環境に対応したセットアップをセットアップできます。Tomcatは最も人気のあるJavaサーブレットコンテナの1つです。

デフォルトでは、Spring Bootはデスクトップアプリケーションとして実行したり、システムサービスとして構成したりできるスタンドアロンのJavaアプリケーションを構築しますが、新しいサービスをインストールしたり、アプリケーションを手動で実行したりできない環境があります。

スタンドアロンアプリケーションとは反対に、Tomcatは同じアプリケーションプロセス内で複数のアプリケーションを管理できるサービスとしてインストールされ、各アプリケーションに特定のセットアップを行う必要がありません。

このガイドでは、単純なSpring Bootアプリケーションを作成し、Tomcat内で機能するように適合させます。

2. Spring Bootアプリケーションのセットアップ

利用可能なスターターテンプレートの1つを使用して、単純なSpring BootWebアプリケーションをセットアップします。


    org.springframework.boot
    spring-boot-starter-parent
    2.0.2.RELEASE
    


    
        org.springframework.boot
        spring-boot-starter-web
    

Spring Bootがデフォルト設定を処理するため、There’s no need for additional configurationsは標準の@SpringBootApplicationを超えています。

単純なREST EndPointを追加して、有効なコンテンツを返します。

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection 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の場合、コントラクトはServlet API 3.0です。

アプリケーションがこの契約を満たせるようにするには、ソースコードを少し変更する必要があります。

最初に、JARではなくWARアプリケーションをパッケージ化する必要があります。 このために、pom.xmlを次の内容に変更します。

war

次に、バージョン番号が含まれないように、最終的なWARファイル名を変更しましょう。


    ${artifactId}
    ...

次に、Tomcatの依存関係を追加します。


   org.springframework.boot
   spring-boot-starter-tomcat
   provided

最後に、SpringBootServletInitializerインターフェース:を実装することにより、Tomcatに必要なサーブレットコンテキストを初期化します。

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

Tomcatでデプロイ可能なWARアプリケーションを構築するために、the mvn clean package.を実行します。その後、WARファイルがtarget/spring-boot-tomcat.warで生成されます(MavenartifactIdが「spring-boot-tomcat」であると想定)。

この新しいセットアップにより、Spring Bootアプリケーションが非スタンドアロンアプリケーションになることを考慮する必要があります(スタンドアロンモードで再び動作させたい場合は、Tomcatの依存関係からprovidedスコープを削除してください)。

4. TomcatへのWARの展開

WARファイルをTomcatにデプロイして実行するには、次の手順を完了する必要があります。

  1. Download Apache Tomcatを作成し、tomcatフォルダーに解凍します。

  2. WARファイルをtarget/spring-boot-tomcat.warからtomcat/webapps/フォルダにコピーします

  3. ターミナルからtomcat/binフォルダーに移動して実行します

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

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

  4. http://localhost:8080/spring-boot-tomcat/helloに移動します

これはTomcatの簡単なセットアップです。完全なセットアップガイドについては、Tomcat Installationのガイドを確認してください。 deploying a WAR file to Tomcatの追加の方法もあります。

 5. 結論

この短いガイドでは、シンプルなSpring Bootアプリケーションを作成し、Tomcatサーバーにデプロイ可能な有効なWARアプリケーションに変換しました。

いつものように、例の完全なソースコードはover on GitHubで入手できます。