【问题标题】:Spring Boot REST webservice endpoint when provided external Tomcat提供外部 Tomcat 时的 Spring Boot REST Web 服务端点
【发布时间】:2019-05-31 03:21:51
【问题描述】:

我有一个使用 Spring Boot 和 Maven 构建的简单 Java Web 应用程序。每次我在 pom.xml 中修改我的工件版本时,我的 Web 服务端点都会更改。

例如,假设在控制器类中我有 @RequestMapping("/api/v1/") 注释并假设以下 pom 摘录

<artifactId>myConv</artifactId>
<version>1.0.0</version>

网络服务端点将是http://localhost/myConv-1.0.0/api/v1/....

如果我将版本更改为 1.0.2,端点将是 http://localhost/myConv-1.0.2/api/v1/....

我怎样才能让它成为静态的?

谢谢。

更新

我发现该解决方案不起作用,因为提供的服务器 (Wildfly) 覆盖了 spring 应用程序上下文。

我已经解决了按照here 指定的更改上下文的问题。

但是有人能解释一下为什么吗?

更新 2 - 在外部服务器上部署时的解决方案

我发现这个指南似乎很好 https://octopus.com/blog/defining-tomcat-context-paths

【问题讨论】:

    标签: java maven spring-boot pom.xml


    【解决方案1】:

    需要设置上下文路径属性 server.servlet.context-path=/ 在您的 application.ymlapplication.properties 中,您将能够访问 REST api http://localhost/api/v1/.

    【讨论】:

    • 我不知道为什么,如果我手动部署战争它不起作用。相反,如果我通过 IDE 启动它似乎可以工作。 pom.xml 可能是原因吗?
    • 解压战争并检查它是否更新了属性文件。此外,在创建战争之前,请运行mvn clean 目标。另一个检查点是,检查您的war 目标是否包含您创建的所有属性文件并将它们投入战争。
    • 是的,确实如此。战争包含正确的 .properties 文件。
    【解决方案2】:

    你需要配置

    server.servlet.context-path
    

    看看官方文档 spring boot documentation

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 2017-03-14
      • 2018-09-06
      • 1970-01-01
      • 2013-12-02
      • 2019-12-31
      • 2017-10-31
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多