Spring Boot部署战争

时间:2018-10-18 19:28:04

标签: java spring-boot tomcat war web-deployment

我正在尝试将具有Spring Boot 2.0.6和Java 8的Spring Boot应用程序部署到Ubuntu 18服务器上的Tomcat 8中以及Windows xampp上的tomcat 7中。我读到最好的方法是创建一个war文件,将其放在webapps文件夹中,然后启动服务器。我会这样尝试并使用tomcat的管理器应用程序。

对于配置tomcat服务器,我遵循了this指南,适用于Ubuntu中的tomcat 8。

在这两种方法中,我都得到相同的结果,我可以在上传应用程序后在服务器中启动我的应用程序,但是如果我尝试在浏览器中写路径或通过单击tomcat的管理器应用程序中的路径来访问它,则浏览器每次都会显示404错误。错误显示:所需的资源不可用。

昨天,我尝试下载示例战争并上传了它,它可以正常运行。所以我想错误是我发动战争的形式。

在IDE中,我正在使用Spring Tool Suit3。要进行战争,请按照以下步骤操作:

  1. 在我的主类上扩展了SpringBootServletInitializer。
  2. 在主类上添加SpringApplicationBuilder方法。
  3. 将位于pom.xml中的my的内容从jar更改为war。
  4. 添加下一个依赖项:

    <dependency>    
        <groupId>org.springframework.boot</groupId>         
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>     
    </dependency>
    
  5. 右键单击项目>“运行”>“ Maven build ...”

  6. 在表示“ Gloas”的输入中写上“ package”。

一段时间后,战争爆发了。我现在不知道这是否是正确的表格,但我唯一知道。你能帮我吗?

这是带有示例代码的存储库的链接,该示例代码具有我要部署的配置:https://bitbucket.org/josealvarezvivar/samplespring/src/master/

谢谢。

2 个答案:

答案 0 :(得分:0)

如果战争不在src / main / resources中,则您需要将html页面与战争打包在一起 This could help

答案 1 :(得分:0)

嗨,如果您使用的是Spring Boot 2,则需要从如下所示的webflux依赖项中排除netty react服务器。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
    <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-reactor-netty</artifactId>
      </exclusion>
    </exclusions>
</dependency>

使用maven创建您的WAR文件,您应该会很好。