Cloud Foundry中的上下文路径路由问题

时间:2017-03-16 20:58:45

标签: tomcat servlets cloudfoundry pivotal-cloud-foundry contextpath

我目前正在将动态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 }}'

1 个答案:

答案 0 :(得分:3)

  

如何设置非Spring java应用程序的上下文路径以在云代工厂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音乐在http://spring-music-example.example.com/spring-music处可用,而非默认http://spring-music-example.example.com/

这与基于路径的路由(即cf push --route-path或或cf create-route --path一起使用效果非常好。

如果它不起作用:

  1. 检查您是否已重新启动应用或通过cf push应用更改。
  2. 检查您是否使用了最新版本的Java build Pack。我用3.14测试过它。
  3. 检查您的Java build pack config/tomcat.yml文件的版本(即this)。此文件定义配置选项的层次结构,偶尔也会更改。确保您设置的内容与您的构建包版本中的文件匹配。
  4. 希望有所帮助!