1. 程式人生 > >tomcat -ROOT 與webapps 的關係,關於部署的一些問題

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