【问题标题】:Want to change the context path in Spring boot application in an external Tomact server version 9想要在外部 Tomcat 服务器版本 9 中更改 Spring Boot 应用程序中的上下文路径
【发布时间】:2021-08-12 04:59:16
【问题描述】:

我想在外部 Tomcat 服务器版本 9 中部署 Spring Boot 应用程序。我能够部署它并且还可以使用端点。但是我在application.properties 文件中设置的属性不起作用。就像server.servlet.context-path=/myapp 一样不起作用,而是我得到的上下文路径是http://localhost:8080/myapp-0.0.1-SNAPSHOT/api/ping

我正在使用 2.3.10.RELEASE 和 Java 1.8 和 Tomcat 版本 9.0.46 谁能帮我解决这个问题。

但一切都在嵌入式 tomcat 上完美运行。提前感谢您的任何建议,非常感谢您的评论。

谁能帮我解决这个问题 - 我的 war 文件名是 myapp-0.1.war 但应用程序的上下文路径是这样的 localhost:8080/myapp/api/ping

【问题讨论】:

    标签: java spring-boot tomcat


    【解决方案1】:

    当您在外部 servlet 容器中运行 Spring Boot 应用程序时,server.* 属性适用。

    如果您愿意更改命名约定,您可以将名为 myapp##0.1.war 的 WAR 文件放到 $CATALINA_BASE/webapps 目录中,并从并行部署中受益(参见 parallel deployment)。

    如果你想坚持你的命名约定,你可以为你的 WAR 文件创建一个文件夹(例如$CATALINA_BASE/webapps-available)并创建一个部署描述符$CATALINA_BASE/conf/<engine_name>/<host_name>/<context_path>.xml(在你的情况下可能是$CATALINA_BASE/conf/Catalina/localhost/myapp.xml),其内容如下:

    <Context docBase="${catalina.base}/webapps-available/myapp-0.1.war" />
    

    【讨论】:

      【解决方案2】:

      在构建文件中使用 finalName 属性(maven 的 pom.xml)

      <finalName>myapp</finalName>
      

      【讨论】:

      • 谢谢,Alien 可以了。但是如果战争名称像 myapp-0.1.war 那么它就不起作用了。我正在寻找我的战争文件名是 myapp-0.1.war 但相应的上下文路径是 /myapp 的东西。这样现有的端点将按预期工作。 localhost:8080/myapp/api/ping
      • 它将确保在 maven 构建之后,war 文件名将与您传入的最终名称相同。
      • 谁能帮我解决这个问题 - 我的战争文件名是 myapp-0.1.war 但应用程序的上下文路径是这样的 localhost:8080/myapp/api/平
      猜你喜欢
      • 2021-06-30
      • 2018-05-06
      • 2015-06-19
      • 2020-11-27
      • 1970-01-01
      • 2013-08-25
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多