2012-09-12 56 views
0

我有一個web應用程序,我在tomcat中本地運行,並且我也部署到了Cloudbees。不過,我在使用虛擬主機的cloudbees和使用上下文路徑的本地tomcat方面遇到了一些問題。Cloudbees虛擬主機與tomcat上下文路徑

我通過

  • http://localhost:8080/SpringMVC

訪問我本地的Tomcat應用程序在CloudBees的,我通過

訪問到目前爲止好,但問題是當我嘗試提交時。在當地,這種成功提交到

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

但在CloudBees的,它試圖(和失敗)之前遞交到

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

如果我手動修改瀏覽器網址爲

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

這一切工作正常。

我看到了一個類似的問題posted here,但建議的解決方案是

  1. 更新使用前綴路徑中的web.xml(例如,我認爲 /在用SpringMVC我的情況),但是這樣會破壞我的本地tomcat版本,或者
  2. 將應用程序部署爲具有application.xml的EAR文件 - 但是 遷移到EE容器(如tomcat EE或JBoss)將會是一個更大的任務。

我已經想到了解決辦法可能是使用CloudBees的Web配置文件以某種方式配置的應用程序使用(像)http://springmvc.shaunabram.cloudbees.net/SpringMVC作爲我的基本URL,但我看不到任何實例(所有的CloudBees Web配置文件示例似乎用於特定於環境的DataSources)。

任何幫助非常感謝!

肖恩

回答

2

Web應用程序不應該使用絕對路徑始終使用ServletContext.getContextPath建立URL構造形式的操作路徑的URL()。我想知道你遇到了這個問題,假設你使用SpringMVC來處理這個問題。

或者,也許你硬編碼的一些資源的路徑,而應使用來產生足夠的路徑,或者一個小腳本附加上下文路徑:

<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

+0

感謝您的回答(和鏈接)尼古拉斯。 swashbuck1r的回答也很有用。 建議,解決方案只是將我的表單動作從

更改爲 非常感謝, Shaun –

0

CloudBees的使用ROOT上下文路徑運行你的應用程序[/]。你至少有兩個選項,使您的本地環境和雲環境都有你的應用程序的工作:

  • 運行你的應用程序在本地使用root用戶上下文(通過部署應用 的webapps/ROOT或webapos/ROOT。戰爭)
  • 更改用來生成表單使用 request.getContextPath()