SpringBoot的jsp頁面,長時間未訪問後,再次訪問就出現ClassNotFound的異常

項目環境

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
相關文章
相關標籤/搜索