【问题标题】:Deploy a war of Spring Boot application to the local Tomcat server: 404 response [duplicate]将Spring Boot应用程序的战争部署到本地Tomcat服务器:404响应[重复]
【发布时间】:2021-07-06 21:34:50
【问题描述】:

我使用Spring Initializr 生成了一个简单的Greeting Web 应用程序,并选择war 作为打包类型。从终端使用mvn spring-boot:run 启动它并将我的浏览器指向http://localhost:8080/greeting 会返回预期的响应。

我按照article 进行部署步骤并修改了pom.xml 以避免在生成的战争中包含版本号:

<build>
    <finalName>${artifactId}</finalName>
    <plugins>
...
</build>

我像往常一样使用mvn clean install 构建战争,并获得了预期的demo-spring-web.war,我将其复制/粘贴到apache-tomcat-10.0.4/webapp 文件夹中。

然后我从 Tomcat bin 文件夹启动运行 catalina.sh run 的 Tomcat bu。 Tomcat启动并显示demo-spring-web.war部署成功:

11-Apr-2021 18:24:36.414 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR 
Deployment of web application archive [/Users/serguei/soft/apache-tomcat-10.0.4/webapps/demo-spring-web.war] has finished in [1,286] ms

但是当我尝试在localhost:8080/demo-spring-web/greeting 访问已部署的应用程序时,它返回了 404 状态。

这有什么问题?

【问题讨论】:

  • 即使完全没有意义,我已经尝试过了,但没有成功, - 每个部署的应用程序都在自己的上下文中运行,这就是为什么如果你应该始终在路由前加上应用程序名称没有调整一些 Tomcat 设置。
  • Spring 的 javax.servlet.ServletContainerInitializer 被 Tomcat 10 静默忽略,它会寻找 jakarta.servlet.ServletContainerInitializer
  • 非常感谢 @PiotrP.Karwasz,将 Tomcat 版本降级到 9.0.45 版本解决了这个问题。该死的:)。
  • 好吧,Oracle 拒绝让 Jakarta EE 保留 javax.* 命名空间给那些不经常关注 Java EE 新闻的人带来了数千小时的挫败感。

标签: spring-boot tomcat


【解决方案1】:

您必须声明一个扩展 SpringBootServletInitializer 的运行类,以便在战争模式下部署。像这样:

@SpringBootApplication public class AppTomcat extends SpringBootServletInitializer {
}

【讨论】:

    【解决方案2】:
    1. spring 初始化程序的默认准备/初始化应用程序包含初始化应用程序的 main() 方法,以便它可以在独立模式下运行并可以快速测试。 如果您想将其部署到另一个容器,您应该创建一个 servlet 来初始化应用程序。

    所以你应该用 SpringBootServletInitializer 扩展具有 main 方法的类并删除 main 方法。

    1. 如果您在 .
    2. 中有插件“org.springframework.boot”,“mvn clean package”将失败。

    我认为遵循以上两个步骤将使构建的战争可以部署在外部 tomcat 中。

    我以前读过一篇文章,可能也有帮助:https://www.baeldung.com/spring-boot-war-tomcat-deploy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2015-10-03
      • 2019-02-04
      • 2016-03-23
      • 2017-12-17
      • 1970-01-01
      • 2015-09-07
      相关资源
      最近更新 更多