tomcat 快取導致的嚴重問題

  • 2019 年 10 月 5 日
  • 筆記

今天在部署jsp程式碼的時候,打成war包丟到線上伺服器的tomcat容器裡面。結果死活不出結果。

諮詢了下同事,說是tomcat的快取的問題。

清理快取方法如下:

step1 停掉tomcat,進入tomcat的主目錄。

step2 刪掉work目錄下全部文件(work目錄不要刪!)。

step3 刪掉temp目錄下的所有文件。

step4 再次啟動tomcat即可

下面是摘自其他人部落格的:

tomcat有一個work目錄,裡面存放了頁面的快取,訪問的jsp都會編譯(從 work里進入Catalina後的如localhost站點文件夾下的項目,我們可以看到那些jsp頁面會被編譯成應該是servlet文件,下次再來 訪問時,就直接運行servlet類就可以向客戶端反應響應頁面了,所以有的部落格說第一次訪問時會比較慢,是因為新發布上去的頁面在第一個人訪問時,會先 編譯成servlet文件,所以慢了,一旦編譯好,那麼除非jsp頁面修改,不然下次訪問直接運行servlet就可以響應用戶,所以快),編譯後的文件都會存儲在work目錄下。而tomcat顯示的目錄,都會從這個快取里找編譯後的jsp對應的class文件。所以當清空了work目錄後,該過程將會從新來過。          有的時候會遇到一個問題,就是修改後的頁面在tomcat運行的時候顯示不了修改後的痕迹。這個時候刪除work目錄下對應的項目文件夾,重新啟動tomcat就可以了。

還可以修改server.xml ,添加個reloadable="true",例如下面這種寫法:

<Context path="/" docBase="/home/website/web1"  reloadable="true">  

然後重啟tomcat即可。