在Tomcat上作为WAR部署的Spring boot REST应用程序无法正常工作

问题描述 投票:0回答:1

创建了一个Spring Boot REST应用程序。

作为Spring启动应用程序运行在日食中将其作为spring boot application运行时。效果很好。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);
        }
    }
  1. pom.xml中添加了起始班级条目
    <properties>
        <java.version>1.8</java.version>
        <start-class>com.codingParkFun.rmsbackend.RmsBackendApplication</start-class>
    </properties>
  1. 添加了入门tomcat依赖项
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
  1. 很少有文档说重写configureSpringServletContainerInitializer方法。但就我而言,SpringServletContainerInitializer没有configure方法。我下载了spring tools 4.0

  2. 生成的带有maven install的程序包。战争包的名称为rms-0.0.1-SNAPSHOT.war

  3. 在warcat上部署war软件包(版本9.0.27]

  4. 访问REST API URL-http://localhost:8080/rms-0.0.1-SNAPSHOT/schools

输出enter image description here

  1. Tomcat本地主机日志如下:
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

不确定应用程序REST API何时无法运行。请指导。

java spring maven spring-boot tomcat
1个回答
0
投票

您需要扩展SpringBootServletInitializer,而不是SpringServletContainerInitializer。然后,您可以按照步骤4中的说明重写configure方法,如下所示:

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

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.