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
相关文章
相关标签/搜索