我目前正在将动态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 }}'
答案 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
一起使用效果非常好。
如果它不起作用:
cf push
应用更改。config/tomcat.yml
文件的版本(即this)。此文件定义配置选项的层次结构,偶尔也会更改。确保您设置的内容与您的构建包版本中的文件匹配。希望有所帮助!