【问题标题】:Spring REST Service on Tomcat with Gradle带有 Gradle 的 Tomcat 上的 Spring REST 服务
【发布时间】:2015-01-08 18:20:53
【问题描述】:

我已经使用 Spring 创建了一个 REST 服务,但无法理解如何将其部署到 Tomcat 服务器。

我熟悉将应用程序放在具有 servlet 映射等的 Tomcat 实例上,但似乎这一切都在 Java 类中的 Spring 注释中处理。我在 Gradle 中启用了 'war' 插件,一切似乎都可以正常导出。我只是感到困惑,因为 Spring 需要一个 Application 类来运行控制器,那么我该如何让它与 web.xml 文件之类的东西一起使用?

我什至可能不在正确的轨道上。我还阅读了一些关于将 .jar 部署为 REST 端点的内容,但我不知道从哪里开始。

如果有人能给我简要概述需要做什么才能获得 Spring REST 服务,例如构建 here 以在 Tomcat 实例上运行的服务,我将不胜感激。

Java 8 春天 摇篮 2.2.1 视窗 7

【问题讨论】:

  • 据我了解,您说的是 Spring Boot,对吧?否则,你不需要Application类,你需要一个ServletFilter/ContextListener来加载配置。
  • 我对 Spring Boot 的理解(可能不正确)是它包含一个用于独立应用程序的嵌入式服务器。我希望能够拥有一个 Tomcat 实例,其中部署了多个应用程序/上下文。这些应用程序只是支持 Javascript 应用程序的 REST 服务。

标签: java spring rest tomcat


【解决方案1】:

您需要使用 Spring servlet 和 spring 上下文创建一个应用程序(war 包)(互联网上有很多教程)。您需要包括组件扫描(有关示例,请参阅此处的文章http://www.mkyong.com/spring/spring-auto-scanning-components/)。

Spring 扫描组件(和您的控制器)并识别 @Controller 或 @RestController 注释并自动将其分配给路由。就是这样:)。

【讨论】:

    【解决方案2】:

    由于听起来您使用的是 Spring Boot,因此您只需要将 Tomcat 依赖项标记为providedRuntime,如http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-gradle-packaging 所述:

    ...
    apply plugin: 'war'
    
    war {
        baseName = 'myapp'
        version =  '0.5.0'
    }
    
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/libs-snapshot" }
    }
    
    configurations {
        providedRuntime
    }
    
    dependencies {
        compile("org.springframework.boot:spring-boot-starter-web")
        providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
        ...
    }
    

    那么您的战争应该可以部署到外部 Tomcat 实例。

    【讨论】:

      猜你喜欢
      • 2017-10-31
      • 2017-01-10
      • 1970-01-01
      • 2015-08-16
      • 2017-12-15
      • 2013-09-27
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多