2013-02-16 71 views
0

我有一個在Tomcat 6中游泳的web應用程序。假設它運行在server:8282/MyApplication上。我有一個上下文XML,看起來像這樣:Tomcat 6到Tomcat 7會導致上下文路徑停止合作

<Context crossContext="true" 
     debug="5" 
     docBase="MyApplication" 
     path="MyApplication" 
     reloadable="true"> 

在我的申請,我的鏈接看起來像

server:8282/MyApplication/myAction.do?params=blah 

當我將其切換到Tomcat 7,它似乎鏈接更改爲:

server8282/myAction.do?params=blah 

我在應用程序中沒有改變任何東西,它在兩個地方都是相同的代碼。是否有一些全局設置可以更改爲「MyApplication」?

編輯:生成的鏈接代碼,作爲一個例子,:

<a href="<%=request.getContextPath() %>/myAction.do?params=blah">do the blah</a> 
+0

向我們展示生成該鏈接的代碼。 – 2013-02-16 00:10:51

+0

添加了創建鏈接的jsp – corsiKa 2013-02-16 00:20:44

回答

1

好像事情是不對您的部署過程中,由於某種原因Tomcat的正試圖在根目錄,以滿足您的應用程序的服務器,因爲你的${pageContext.request.contextPath}返回空。

由於我不確定您的確切部署要求,請嘗試以下過程之一。只是可以肯定,避免配置衝突,做一個全新的Tomcat 7的安裝:

  1. 如果你有一個MyApplication.war文件只是砸在<CATALINA_HOME>\webapps,不使用任何上下文文件(經上下文的器皿內的文件戰爭文件,即/META-INF/context.xml
  2. 如果您有爆炸的應用程序,請在webapps之內創建一個文件夾MyApplication並在其中放置應用程序內容(再次,沒有context.xml)。

如果你真的需要保留您的應用程序webapps外:

  1. Context元素添加到<CATALINA_HOME>\conf\server.xml<Host>

    <Context path="/MyApplication" 
         docBase="/absolute/physical/path/to/MyApplication" 
         reloadable="true" 
         crossContext="true"> 
    
  2. <CATALINA_HOME>\Catalina\localhost或者創建一個MyApplication.xml文件,上面提到的內容。

如需進一步信息請參考The Context Container documentation

+0

嗨安東尼 - 我在context.xml中有一個資源(tomcat託管的SQL連接),這就是爲什麼文件首先存在。有沒有更好的地方,所以我可以擺脫context.xml? – corsiKa 2013-02-19 16:14:55

+0

因爲Tomcat不支持[@DataSourceDefinition](http://docs.oracle.com/javaee/6/api/javax/annotation/sql/DataSourceDefinition.html),所以'Context'仍然是一條路。但是,通過將''標記移動到' \ conf \ server.xml' 並在'中聲明一個'', \的conf \ context.xml'。這將創建一個全局數據源(可由所有應用程序訪問)。看看我以前的答案之一更多詳細信息:http://stackoverflow.com/questions/5997122 – 2013-02-20 00:21:47

+0

這是非常好的。我已經添加了一個臨時措施,使用一個愚蠢的'AppConstants.CONTEXT_PATH'和一個'public static final String CONTEXT_PATH =「/ MyApplication」;'作爲權宜之計。我更喜歡更強大的功能,因爲這是一些應用程序中的問題。謝謝! – corsiKa 2013-02-20 01:12:08