Tomcat 云计算中的上下文路径路由问题

Tomcat 云计算中的上下文路径路由问题,tomcat,servlets,cloud-foundry,contextpath,Tomcat,Servlets,Cloud Foundry,Contextpath,我目前正在向JavaBuildPack(Tomcat)部署一个动态Java应用程序(基于servlet) 我们使用基于上下文路径的路由。对于应用程序,我们正在应用程序属性文件或Dserver.contextPath中设置上下文路径,两者都可以正常工作 我们如何设置非Spring Java应用程序的上下文路径以在CloudFoundry Tomcat容器上工作?我们尝试了以下选项,但在连接到路由时出现了404个错误 cf set-env my-application JBP_CONFIG_TOMC

我目前正在向JavaBuildPack(Tomcat)部署一个动态Java应用程序(基于servlet)

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

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

cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /first-segment/second-segment }}'
如何设置非spring java应用程序的上下文路径以在CloudFoundry 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在上可用,而不是默认值

这与基于路径的路由(即,
cf push--route path
cf create route--path
)结合使用也非常有效

如果它不起作用:

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

  • 希望有帮助!

    在设置环境变量后,您是否重新启动了我的应用程序?此环境变量需要重新启动应用程序,重新启动是不够的。