開発者ドキュメント

Springブート – WARファイルをTomcatにデプロイする

この記事では、SpringブートWARファイルをTomcatサーブレットコンテナにデプロイする方法を説明します。

SpringブートWARデプロイメントでは、次の3つの手順を実行する必要があります。

  1. SpringBootServletInitializerを拡張する

  2. 提供されたサーブレットコンテナにマークを付けました.

  3. パッケージングを戦争に更新する


テスト済み

  1. 春のブート1.4.2.RELEASE

  2. Tomcat 8.5.9

  3. Maven 3

1. SpringBootServletInitializerを拡張する

既存の

@ SpringBootApplication`クラスが

SpringBootServletInitializer`を拡張するようにします。

1.1従来のSpringブートJARデプロイメント。 (このファイルを更新してWARデプロイメントをサポートする)

SpringBootWebApplication.java

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootWebApplication {

    public static void main(String[]args) throws Exception {
        SpringApplication.run(SpringBootWebApplication.class, args);
    }

}

1.2 SpringブートWARデプロイメント。

SpringBootWebApplication.java

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 SpringBootWebApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootWebApplication.class);
    }

    public static void main(String[]args) throws Exception {
        SpringApplication.run(SpringBootWebApplication.class, args);
    }

}
/** @SpringBootApplication
public class SpringBootWebApplication {

    public static void main(String[]args) throws Exception {
        SpringApplication.run(SpringBootWebApplication.class, args);
    }

}** /....

デプロイメントのために追加の `SpringBootWebApplication`クラスを作成する場合は、Springブートにどのメインクラスを起動するかを伝えてください:

pom.xml
<properties>
      <start-class>com.mkyong.NewSpringBootWebApplicationForWAR</start-class>
</properties>
これを読んでください:リンク://spring-boot/spring-boot-which-main-class-to-start/[SpringBoot  - 起動するメインクラス]

===  2.提供されたサーブレットコンテナにマークを付けました.

pom.xml

<dependencies>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- marked the embedded servlet container as provided -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

</dependencies>

===  3.パッケージを戦争に更新する

pom.xml
<packaging>war</packaging>
`mvn package`を実行し、` $ project/target/xxx.war`をTomcatにコピーして展開します。

===  4.完全な例 -  SpringブートWAR + Tomcatデプロイメント

4.1 spring-boot/spring-boot-hello-world-example-thymeleaf/[Spring Boot Thymeleafの例]を更新し、Tomcatに手動で展開してください。

4.2既存の `SpringBootWebApplication`を更新し、` SpringBootServletInitializer`を拡張するようにします。

pom.xml

package com.mkyong;

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 SpringBootWebApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(SpringBootWebApplication.class);
}
public static void main(String[]args) throws Exception {
    SpringApplication.run(SpringBootWebApplication.class, args);
}

}

4.3パッケージを `war`に更新し、提供された` spring-boot-starter-tomcat`にマークを付けます。

pom.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<project xmlns=”http://maven.apache.org/POM/4.0.0″
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd”&gt

;

<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-web-thymeleaf</artifactId>
<packaging>war</packaging>
<name>Spring Boot Web Thymeleaf Example</name>
<description>Spring Boot Web Thymeleaf Example</description>
<url>/</url>
<version>1.0</version>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>
<properties>
    <java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- marked the embedded servlet container as provided -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<!-- hot swapping, disable cache for template, enable live reload -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
<!-- Optional, for bootstrap -->
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>3.3.7</version>
</dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- Package as an executable jar/war -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
4.4これはオプションで、後でデモンストレーションのために `contextPath`を`/mkyong`に更新します。完了しました。 WARデプロイメントの準備ができました。

application.properties

welcome.message: Hello Mkyong

server.contextPath=/mkyong

4.5 Tomcatを入手し、WARファイルを展開します。

Mac OS X:ターミナル
モバイルバージョンを終了