【问题标题】:Context path routing issue in Cloud FoundryCloud Foundry 中的上下文路径路由问题
【发布时间】:2017-08-08 06:02:28
【问题描述】:

我目前正在将一个动态 Java 应用程序(基于 servlet)部署到 Cloud Foundry Java buildpack (Tomcat)。

我们正在使用基于上下文路径的路由。对于Spring 应用程序,我们在应用程序属性文件或 Dserver.contextPath 中设置上下文路径,两者都可以正常工作。

我们如何设置非 Spring Java 应用程序的上下文路径以在 Cloud Foundry Tomcat 容器上工作?我们尝试了以下选项,但在连接到路由时遇到 404 错误。

cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /first-segment/second-segment }}'

【问题讨论】:

  • 你在设置环境变量后做了cf restage my-application吗?这个环境变量需要重新暂存应用,重启是不够的。

标签: tomcat servlets cloud-foundry contextpath


【解决方案1】:

如何设置非 Spring Java 应用程序的上下文路径以在 Cloud Foundry tomcat 容器上工作?

您拥有的语法应该可以工作。我测试了cf set-env JBP_CONFIG_TOMCAT '{tomcat: {context_path: "/spring-music"}}',它工作正常。你也可以使用cf set-env JBP_CONFIG_TOMCAT '[tomcat: {context_path: "/spring-music"}]',这对我也有用。

使用manifest.yml的示例:

---
applications:
- name: spring-music
  memory: 512M
  host: spring-music-example
  path: build/libs/spring-music.war
  env:
    JBP_CONFIG_TOMCAT: '[tomcat: {context_path: "/spring-music"}]'

这导致 Spring Music 在http://spring-music-example.example.com/spring-music 上可用,而不是默认的http://spring-music-example.example.com/

这也可以很好地与基于路径的路由(即cf push --route-pathcf create-route --path)结合使用。

如果它不起作用:

  1. 检查您是否已通过 cf push 重新暂存您的应用或应用更改。
  2. 检查您使用的是最新版本的 Java 构建包。我用 3.14 进行了测试,它工作正常。
  3. 检查 Java 构建包的 config/tomcat.yml 文件(即 this)的版本。该文件定义了配置选项的层次结构,并且偶尔会发生更改。确保您设置的内容与您的构建包版本中的该文件匹配。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2016-04-03
    • 2011-03-29
    相关资源
    最近更新 更多