2012-02-24 89 views
9

我創建了一個war並將其部署到我的$ CATALINA_HOME/webapps文件夾中。然後我想測試配置它指向在任意位置的戰爭,例如c:\ tmp \ mywar.war。以下是我在$ CATALINA_HOME/conf中放入server.xml文件的內容。Tomcat通過server.xml映射上下文

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
<Context path="/blah" docBase="h:/tmp/mywar.war" reloadable="true" /> 
</Host> 

當我嘗試加載localhost:8080/blah時,Tomcat返回404。如果我將docBase指向爆炸戰爭,它就可以工作。我在這裏錯過了什麼?

+0

你能看到它部署在Tomcat管理管理中嗎? – Cratylus 2012-02-24 17:28:38

+0

是的,它的部署爲/等,但訪問它只會返回一個404 – 2012-02-24 19:01:36

+1

日誌中的任何東西? – mindas 2012-02-24 22:11:49

回答

0

不要那樣做,這種做法是從Tomcat 6 discouraged

對於Tomcat 6,與Tomcat 4.x在,不建議直接放置元素在server.xml文件。這是因爲它使得修改Context配置由於主conf/server.xml文件更具侵入性的而不需要重新啓動的Tomcat不能被重新加載。

+0

如果將上下文設置放在$ CATALINA_HOME/conf/localhost/blah.xml中,它將刪除每個重新部署的應用程序上的配置。除非有禁用此行爲,任何有利於通過保持配置了server.xml中的所需要每次都手動更換XML CONFIGS被壓倒你增益的方式。 – 2012-02-27 20:53:07

+0

這是預期的行爲並且是正確的。由於該文件與上下文相關聯,所以**具有**將被重新部署刪除。 – 2012-02-27 21:26:06

4

您最好將上下文配置放在應用程序文件中/META-INF/context.xml的單個文件中。

不推薦將元素直接放在server.xml文件中。這是因爲它使得修改Context配置更具侵入性,因爲在不重新啓動Tomcat的情況下無法重新加載主conf/server.xml文件。

您可以檢查出Tomcat7文件在這裏更多的細節:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context

4

如果您想擁有可在http://myhost:8080/myTestContext站點,投入$Catalina_home$/conf/localhost/whateveryoulike.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
    <Context deployOnStartup="true" docBase="C:\path\to\your\docBase\" path="/myTestContext" reloadable="false"> 
    <Manager pathname=""/> 
</Context> 
0

我只是碰到了這個以下問題。有點尷尬,這是因爲我弄錯了路徑!

您可以通過檢查日誌(標準錯誤的)下

驗證這一點[Tomcat的安裝目錄] /日誌

你會看到的東西,看起來像這樣:

Jun 16, 2014 12:34:10 PM org.apache.catalina.core.StandardContext resourcesStart SEVERE: Error starting static Resources java.lang.IllegalArgumentException: Document base ... does not exist or is not a readable directory

進一步的說明(你不會得到一個錯誤信息這)是,如果你正在部署一場戰爭,而不是你要的分解Web應用程序指定文件的路徑不只是它包含目錄