1. 序章

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

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

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

このチュートリアルでは、単純なSpring Bootアプリケーションを作成し、Tomcat内で動作するように適合させます。

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

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

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>2.4.0</version> 
    <relativePath/> 
</parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies>

Spring Bootがデフォルト設定を処理するため、標準の @ Spring BootApplication、以外に追加の構成は必要ありません。

次に、単純な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. SpringBootWARの作成

サーブレットコンテナは、アプリケーションがデプロイされるいくつかのコントラクトを満たすことを期待しています。 Tomcatの場合、契約はサーブレットAPI3.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アプリケーションをビルドするには、 mvn cleanパッケージを実行します。その後、WARファイルが target / spring-boot-deployment.warに生成されます。 (Maven ArtifactIdが「spring-boot-deployment」であると想定)。

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

4. WARをTomcatにデプロイする

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

  1. Apache Tomcat をダウンロードし、tomcatフォルダーに解凍します
  2. WARファイルをtarget/spring-boot-deployment.warからtomcat/ webapps/フォルダーにコピーします
  3. ターミナルからtomcat/ bin フォルダーに移動し、実行します
    1. catalina.bat run (Windowsの場合)
    2. catalina.sh run (Unixベースのシステムの場合)
  4. http:// localhost:8080 / spring-boot-deployment /helloに移動します

これはTomcatの簡単なセットアップであるため、完全なセットアップガイドについては、Tomcatインストールのガイドを確認してください。 WARファイルをTomcatにデプロイする追加の方法もあります。

 5. 結論

この簡単な記事では、単純なSpring Bootアプリケーションを作成し、Tomcatサーバーにデプロイ可能な有効なWARアプリケーションに変換しました。

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