部署到独立Tomcat时,Spring Boot应用程序无法正常工作

5 spring-data-rest spring-data-mongodb spring-boot

我已经按照本教程.现在,如果我通过Spring Boot使用它,它可以工作,但如果我尝试在Apache Tomcat 7上部署它(删除应用程序类),我会收到404响应.我也尝试过自己的配置 - 像这样:

@Configuration
public class MongoConfiguration {

    public @Bean MongoDbFactory mongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(new Mongo("127.0.0.1", 27017), "movies");
    }

    public @Bean MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.所以2个问题.

  1. 如何在tomcat上运行它(如何在tomcat上进行简单的休息和运行)
  2. 如何通过注释配置mongo(只是为了获取我的数据库)

注意:默认情况下,它使用测试vile运行spring boot,我可以通过简单的控制器(而不是@RepositoryRestResource)使其工作,但我希望能够卷曲http://localhost:8080并获得选项响应.

Oli*_*ohm 19

您是否确定按照Boot参考文档的传统部署一节进行了操作?根据您的描述,它看起来不像Spring Data REST或MongoDB不起作用,但部署根本不起作用.

诀窍应该是让主配置类必须实现一个特殊的接口,以便servlet容器可以找到引导程序的配置(从参考文档中获取的样本):

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class);
  }
}
Run Code Online (Sandbox Code Playgroud)

SpringBootServletInitializer这是关键方面,因为它是挂钩到传统Web应用程序的Servlet 3引导程序机制的类型.参考文档还有说明如何在Servlet 3.0之前使引导应用程序在Servlet容器中工作.

另请注意,当应用程序部署到独立容器中时,它通常不能通过根(即http://localhost:8080/)获得,而是以部署的WAR文件命名的专用上下文(例如http://localhost:8080/my-app).