tomcat部署應用時設置context path爲空的上下文路徑問題

在server.xml中添加<Context>元素,配置以下:web

<Context docBase="app" path="" reloadable="false" />

在<Context>配置中包含以下信息:
1. 配置docBase值爲:docBase="app"或者docBase="app.war";
2. path爲空,表示app爲tomcat默認應用;
同時,將app.war部署在CATALINA_HOME/webapps/路徑下。tomcat


1.若是在部署app時刪除了CATALINA_HOME/webapps/路徑下的ROOT目錄(即刪除tomcat默認應用),
那麼在tomcat啓動時,會首先在CATALINA_HOME/webapps/路徑下建立名稱爲ROOT的目錄,而後將文件app.war中的內容拷貝到ROOT目錄下,開始部署ROOT應用程序。
接下來纔會解壓app.war,再部署app應用。
從tomcat的啓動日誌能夠很容易知道,在這種狀況下app應用會被加載2次,一次是部署ROOT時加載的,另外一次是部署app自己加載的。
所以,訪問應用能夠帶應用上下文路徑,也能夠不用帶上下文路徑,即:http://host:port/xxx或者http://host:port/app/xxx。app


2.若是在部署app時不刪除CATALINA_HOME/webapps/路徑下的ROOT目錄,即已經存在默認應用程序。
此時在tomcat啓動時,會先部署ROOT默認應用(注意:已經存在ROOT應用,再也不會拷貝app.war文件內容到ROOT下)。而後解壓app.war,部署app應用。顯然,app應用只被部署一次!
所以,在這種狀況下,即使配置了<Context>元素的path爲空,可是訪問app應用時仍是必須攜帶應用上下文路徑,即:http://host:port/app/xxx。webapp


實際上,tomcat部署應用程序的順序是這樣的(tomcat啓動日誌):
1.最早部署CATALINA_HOME/webapps/路徑下的ROOT應用,該應用爲tomcat的默認應用程序,訪問時不用帶應用上下文路徑,即:http://host:port/xxx。
2.而後再按照字母順序升序依次部署其餘應用程序,如:appA,appB等等。spa


【參考】
http://stackoverflow.com/questions/7276989/how-to-set-the-context-path-of-a-web-application-in-tomcat-7-0 How to set the context path of a web application in Tomcat 7.0日誌

相關文章
相關標籤/搜索