当前位置: 首页 > 知识库问答 >
问题:

在tomcat上部署为WAR的Spring boot REST应用程序不工作

汪丁雷
2023-03-14

创建了一个spring boot REST应用程序。

在Eclipse中作为Spring boot Application运行时,作为Spring boot App
运行。它工作得很好。
REST API使用URL-http://localhost:8080/schools

在tomcat上部署为WAR

我执行了以下步骤

  1. 主类扩展SpringServletContainerInitializer
    @SpringBootApplication
    public class RmsBackendApplication extends SpringServletContainerInitializer {

        public static void main(String[] args) {
            SpringApplication.run(RmsBackendApplication.class, args);
        }
    }
    <properties>
        <java.version>1.8</java.version>
        <start-class>com.codingParkFun.rmsbackend.RmsBackendApplication</start-class>
    </properties>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

很少有文档说重写SpringServletContainerInitializerconfigure方法。但在我的示例中,SpringServletContainerInitializer没有Configure方法。我下载了spring tools 4.0

使用maven install生成包。生成的War包名称为rms-0.0.1-snapshot.War

在tomcat(版本9.0.27)上部署了war包

访问REST API URL-http://localhost:8080/rms-0.0.1-snapshot/schools

09-Nov-2019 11:13:31.013 INFO [main] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath
09-Nov-2019 11:13:32.048 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
09-Nov-2019 11:13:32.048 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
09-Nov-2019 11:13:32.052 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@6231bb88')
09-Nov-2019 11:16:44.566 INFO [Thread-4] org.apache.catalina.core.ApplicationContext.log SessionListener: contextDestroyed()
09-Nov-2019 11:16:44.566 INFO [Thread-4] org.apache.catalina.core.ApplicationContext.log ContextListener: contextDestroyed()
09-Nov-2019 11:19:59.676 INFO [main] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath
09-Nov-2019 11:20:12.722 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
09-Nov-2019 11:20:12.723 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
09-Nov-2019 11:20:12.728 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@2420e962')
09-Nov-2019 11:27:44.515 INFO [main] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath
09-Nov-2019 11:27:45.490 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
09-Nov-2019 11:27:45.490 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
09-Nov-2019 11:27:45.494 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@1c7da28')
09-Nov-2019 11:38:48.705 INFO [http-nio-8080-exec-7] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath

共有1个答案

幸经艺
2023-03-14

您需要扩展SpringBootServletInitializer,而不是SpringServletContainerInitializer。然后可以重写configure method,如步骤4中所述,如下所示:

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

希望有帮助!

 类似资料:
  • 我在IBM jdk 7的WAS 8.5.5上安装solr。我将< code>solr部署为< code>war,并将< code>solr.data.dir和< code>solr.solr.home添加到自定义属性中。 访问网址后:, 我在浏览器上看到以下错误: 错误500:javax.servlet。ServletException:筛选器[SolrRequestFilter]:org.apa

  • 我创建了angular和Spring Boot应用程序,并希望将其部署到tomcat服务器上。为此,我在spring boot项目中复制了angular项目,并提供了pom.xml来创建war文件。之后,我在tomcat上部署了war文件,并启动了它。请告诉我是什么 Angular的index.html中的基本href 应该提供什么上下文路径? 是否需要在application.propertie

  • 我不熟悉weblogic,正在努力部署战争。我有一个在嵌入式tomcat上运行的spring boot应用程序。我改变了主要课程如下。 } 我把包装改成了战争,把tomcat罐子排除在外,然后部署。但是当提交请求时,我得到了404。我在管理控制台的诊断日志中没有看到任何内容。有地方看日志吗。在weblogic管理控制台中,我可以看到应用程序处于活动状态,运行状况良好。 我更改了相同的应用程序spr

  • 我正在开发一个简单的应用程序,它使用泽西作为框架来构建API,并使用Jackson来处理JSON。 当我部署应用程序时,通过复制 我很确定这个问题不在java代码中,因为它曾经与*一起工作。jar包含方法。但我厌倦了这一点,希望将其迁移到maven体系结构。 我不会发布我的全部代码,但你可以在这里看到。 为了简化操作,下面列出了我使用的依赖项: jersey json v1.19 什么会导致此错误

  • 议题背景: 我开始使用OpenShift的目的是--表面上--通过OpenShift安装和管理Liferay6.2门户。为此,我使用jbossas-7和PostgreSQL-9.2墨盒创建了一个OpenShift应用程序--与“DIY墨盒”方法相比,我目前更喜欢官方墨盒,即在OpenShift上安装应用服务器,特别是JBoss AS7,理想情况下在该应用服务器中安装Liferay。 按照Lifer