Cloudbees虚拟主机与tomcat上下文路径

时间:2012-09-12 14:40:18

标签: tomcat cloudbees

我有一个我在tomcat本地运行的Web应用程序,我也部署到了Cloudbees。但是,我使用虚拟主机与使用上下文路径的本地tomcat有一些问题。

我通过

访问我的本地tomcat应用程序
  • http://localhost:8080/SpringMVC

在cloudbees中,我通过

访问它

到目前为止一切顺利,但问题是当我尝试提交时。在本地,这成功提交

  • http://localhost:8080/SpringMVC/HelloWorld

但是在cloudbees上,它尝试(并且失败)提交到

  • http://springmvc.shaunabram.cloudbees.net/SpringMVC/HelloWorld

如果我手动将浏览器URL修改为

  • http://springmvc.shaunabram.cloudbees.net/HelloWorld

一切正常。

我看到了类似的问题posted here,但建议的解决方案是

  1. 更新web.xml以使用前缀路径(例如我认为 / SpringMVC在我的情况下),但这会破坏我的本地tomcat版本,或
  2. 使用application.xml将应用程序部署为EAR文件 - 但是     迁移到像Tomcat EE或JBoss这样的EE容器将是一个很大的问题     更大的任务。
  3. 我原以为解决方案可能是使用CloudBees Web配置文件以某种方式配置要使用的应用程序(类似于http://springmvc.shaunabram.cloudbees.net/SpringMVC作为我的基本URL,但我看不到任何示例(所有CloudBees Web配置文件示例似乎都用于特定于环境的DataSource)。

    任何帮助都非常感谢!

    肖恩

2 个答案:

答案 0 :(得分:2)

Web应用程序绝不应使用绝对路径,并始终使用ServletContext.getContextPath()构建URL。我想你会遇到这个问题,假设你使用SpringMVC为你处理这个问题。

或者你可能硬编码了一些资源路径,但是应该使用它来生成适当的路径,或者使用scriptlet来附加上下文路径:

<c:url value="/style.css" var="url" />
<link rel="stylesheet" href="${url}" type="text/css">

<link rel="stylesheet" href="${pageContext.request.contextPath}/style.css" type="text/css">

另见Spring MVC Request URLs in JSP

答案 1 :(得分:0)

CloudBees使用ROOT上下文路径[/]运行您的应用程序。您至少有两个选项可以让您的应用在本地环境和云环境中运行:

  • 使用ROOT上下文在本地运行您的应用程序(通过将应用程序部署到 webapps / ROOT或webapos / ROOT.war)
  • 更改用于生成表单的URL,以使用构建表单的操作路径 request.getContextPath()