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

 


免責聲明!

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



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