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


 

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

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

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


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。


2.如果在部署app時不刪除CATALINA_HOME/webapps/路徑下的ROOT目錄,即已經存在默認應用程序。
此時在tomcat啟動時,會先部署ROOT默認應用(注意:已經存在ROOT應用,不再會拷貝app.war文件內容到ROOT下)。然后解壓app.war,部署app應用。顯然,app應用只被部署一次!
因此,在這種情況下,即便配置了<Context>元素的path為空,但是訪問app應用時還是必須攜帶應用上下文路徑,即:http://host:port/app/xxx。


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


【參考】
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM