1. ホーム
  2. spring

Tomcatに展開されたSpring Boot War

2023-10-11 16:06:22

質問

AWSにデプロイしたいので、Spring BootアプリをTomcatにデプロイしようとしています。 WARファイルを作成したのですが、Tomcat上では見えているのに実行されないようです。

詳細を教えてください。

0. 以下は私のアプリです。

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class App {
    public static void main(String[] args) {
        SpringApplication.run(SampleController.class, args);
    }
}

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/help")
    @ResponseBody
    String home() {
        String input = "Hi! Please use 'tag','check' and 'close' resources.";
        return input;
    }
}

application.propertiesは以下のようになっています。

server.port=${port:7777}

  1. いくつかの ページ 質問回答 POMに以下を追加しました。

    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

    <groupId>com.niewlabs</groupId>
    <artifactId>highlighter</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <packaging>war</packaging>
    
    <properties>
        <java.version>1.8</java.version>
    </properties>    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.9.RELEASE</version>
    </parent>    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    
    

  2. mvn packageを実行し、WARファイル(サイズ250Mb)を取得し、quot;webapps;フォルダに入れました。

  3. Tomcatを起動し、アプリが表示されるのを確認することができました。
  4. アプリのリンクをクリックすると、"Status 404"ページが表示されます。
  5. Spring Bootアプリをコンテナなしで単体で実行するとlocalhost:7777で実行されますが、Tomcatで実行すると何も表示されません。

更新しました。 もうひとつ 参照 . どの程度役に立つかは不明です。

どのように解決するのですか?

Tomcat上にSpring Bootアプリをデプロイする方法を詳しく説明します。

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file

基本的には、以下のようなクラスを追加する必要がありました。

public class WebInitializer extends SpringBootServletInitializer {   
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(App.class);
    }    
}

また、POMに以下のプロパティを追加しました。

<properties>        
    <start-class>mypackage.App</start-class>
</properties>