tomcat -ROOT 與webapps 的關係,關於部署的一些問題
現象:之前遇到很奇怪的問題,發完版之後沒有效果,頁面還是讀取上一版的。
反覆查詢原因發現 http://localhost:8080/mobie 這個路徑下的頁面是正常的,
而 http://localhost:8080/這個頁面是舊版本的。
為什麼呢?
之前是我們在server.xml
添加了<Context/>配置節,目的是去掉 http://localhost:8080/專案名 後面的專案名,直接訪問域名就可以訪問網站。
這樣做的卻可以用域名訪問,但是帶來了隱藏很深的 很奇怪的問題。如上所訴
原因在於:啟動tomcat 的時候,webapps目錄下面的.war檔案將被自動解壓縮並部署為應用。同時mobile下的應用會copy到ROOT下。如果ROOT檔案下不存在則mobile的應用(子檔案)那麼copy進去(問題就在這裡
我們第一次發版的時候ROOT下並沒有mobile 的應用所以copy 進去沒有問題),再次發版的時候,由於ROOT下存在mobile 應用沒有覆蓋,所以出現兩種結果。 http://localhost:8080/mobie 與 http://localhost:8080訪問的頁面不一致。
解決方法:找到原因之後,在每次發版之前刪調ROOT,啟動tomcat會重新生產ROOT,這樣ROOT下應用就是最新的。
擴充套件:
ROOT 與webapps 的關係:
我們一般都是這麼寫http://localhost:8080/專案名,如果不寫專案名預設就是webapps目錄下的ROOT專案,ROOT裡面就有那隻貓。
比如說你打上http://localhost:8080 就直接訪問root下面的檔案了 預設為tomcat的歡迎頁面
如果你把root下面檔案換成你專案檔案,那麼http://localhost:8080這樣的話就是訪問你專案了
<host appBase="d:/aaa">
<Context path="/smswap" reloadable="true" docBase="D:\workspace\smswap\WebRoot"></Context>
</host>
我們先看appBase,這個目錄表示:
1 這個目錄下面的子目錄將自動被部署為應用。
2 這個目錄下面的.war檔案將被自動解壓縮並部署為應用
而docBase只是指向了你某個應用的目錄,這個可以和appBase沒有任何關係。
總結:
如果你想自己指定路徑,那麼應該在docBase裡面
參考連結:http://blog.csdn.net/liuxuejin/article/details/9104055