Spring Boot War如何部署到Tomcat?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (68)

我正在尝试将Spring Boot应用程序部署到Tomcat,因为我想部署到AWS。我创建了一个WAR文件,但它似乎并未在Tomcat上运行,即使它可见。

详细信息: 这是我的应用程序:

@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),我将其放入“webapps”文件夹中。
  3. 我开始使用Tomcat,并能看到我的应用程序,在我的例子中是“/highlighter-1.0-SNAPSHOT”。
  4. 点击应用程序的链接会显示“状态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>
用户回答回答于

Spring-Boot负责创建一个嵌入式容器,并直接从标准jar文件中运行你的服务。我认为这种模式的意图是支持微服务的开发 - 每个服务都有自己的容器,并且完全独立。也可以使用你的代码来生成Java EE应用程序,但考虑到spring-boot更容易(对于某些类型的应用程序/服务),这可能很愚蠢。

所以,考虑到这些信息,你现在必须决定你将遵循什么样的范式。

Spring-boot是可执行的 - 你只需要运行App类中的main方法,你可以从命令行或者使用你最喜欢的IDE或Maven或Gradle(提示:maven是正确答案)来执行。这将启动一个tomcat服务器(默认情况下),并且你的服务将在其中可用。考虑到你在服务上面发布的配置应该在以下位置可用:http://localhost:7777/context/help- 这context意味着将替换为尚未共享的上下文名称。

当你运行你的main方法时,控制台输出应该告诉你你已经注册的上下文; 使用它来获得正确的URL。

扫码关注云+社区

领取腾讯云代金券