一個讓人超級坑爹的tomcat機制

前言
前些日子趕上了阿里雲的豪車,勒緊褲腰買了兩年的阿里雲主機,買完後很是興奮,趕緊上線部署一個個人博客玩玩,有剛需的可以走鏈接:(有優惠)* https://promotion.aliyun.com/ntms/act/group/team.html?group=xubxmgq0Vv

本次採用的博客系統是GitHub上名噪一時的[]B3log開源博客,後端採用的是Java框架,對新人十分友好,上傳war包到tomcat目錄下之後,如果tomcat運行時會直接解壓,然後你就可以開始訪問了。

坑爹的遭遇

當我部署完我的開源博客後,查看了下我的主機的硬盤大小,只有40G的SSD,心裏想着,這麼小,能省一點空間是一點空間,於是在tomcat還在運行的情況下,ssh遠程刪除了war包(畢竟有幾十M),然後若無其事的返回了 我的博客網站,看到網站加載速度極其緩慢,一開始還抱怨着阿里雲網絡波動也太大了吧,訪問個博客等半天,但是連續刷新幾次之後,通過ping排查了網絡問題之後,才意識到出大問題了,然後再返回tomcat目錄下,才驚奇的發現我的個人博客目錄呢!!!,翻遍天了都沒找到,桑心的倒在鍵盤上。 怎麼會這樣呢,我只刪除了war包 而已,怎麼會把解壓後的war包也給收拾了呢,一開始還以爲是個**天大的BUG** 以爲是SSH遠程命令解析時出現了什麼故障,開啓wireshark抓包後也沒發現什麼線索,直到我看到這樣的解釋:。。。 PS:感謝:https://blog.csdn.net/u012416792/article/details/77975930

tomcat 的war包機制

在tomcat中webapps目錄上傳war包後.



  • war不能在tomcat運行時刪除,否則會刪除自動解壓的工程。 你可以停止tomcat後刪除war。
  • 當你重新部署的時候,如果有與war文件相同的文件夾,就不會重新部署。
  1. 因爲tomcat在運行期, 會實時監控webapps目錄下的war文件,如果有新增的war,就去解壓它; 有刪除war,就連同項目一起刪除 .
  2. 所以,如果您要刪除,可以先關閉tomcat再刪除,這樣不會有影響的


  • Tomcat/webapps下的WAR包和同名已解壓項目,如何加載??

  1. 首先你要明白什麼時候war包纔會解壓
  2. tomcat啓動時候會去查看webapps目錄下的所有war包,同時查看是否有該war包對應的已解壓的同名文件夾
  3. 如果已經存在就不會再解壓也不會覆蓋該工程下已經被修改過的文件.
  4. 只有當你刪除war包對應的同名文件夾(即 你的工程 )後,啓動tomcat時纔會再進行解壓war文件動作



小結

不得不說,懂得背後的原理才能夠真正的避免錯誤,否則瞎蒙真的不是特別好玩,所以說,知識確實是需要好好的積澱的,慢慢來吧。。
ps:有興趣訪問個人博客的夥伴歡迎友鏈哇:—MikeoPerfect的個人日誌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章