SpringBoot 1.5.9.RELEASElinux
centos 6.xcentos
本人公司項目中使用了SpringBoot+jsp,在產品上線一段時間後觀察到,某些不常訪問的JSP頁面,在通過一段時間後再次訪問,發送ClassNotFound的異常。一樣的,其餘有夥伴還有可能出現臨時文件丟失這種現象。緩存
在以前的傳統項目中,咱們都是將代碼打成war包放在tomcat下面運行,當咱們訪問jsp頁面時,jvm會加載jsp頁面,並將頁面編譯爲class文件,這個class文件是存放在tomcat的work目錄下面的,即緩存目錄;在SpringBoot中,咱們使用的內嵌的tomcat服務器,那麼,內嵌服務器的work目錄在哪裏呢?經查閱官方文檔得知,SpringBoot在centos服務器中,會將centos服務器/tmp目錄做爲work目錄,存放臨時文件;但偏偏十分巧合的是,centos服務器對/tmp目錄,有一個tmpwatch操做,詳情點擊我,這個操做簡單來說,就是會刪除/tmp目錄下,240小時內未被訪問過的文件,那麼問題緣由就十分明顯了:jsp編譯後的class文件,被tmpwatch這個操做刪除掉了。tomcat
更改SpringBoot的臨時目錄:服務器
server.tomcat.basedir=/usr/local/tmp