在項(xiàng)目中,一般會(huì)將文件臨時(shí)保存到緩存目錄房官,當(dāng)時(shí)使用
File.createTempFile("tmp", ext, (File) request.getServletContext().getAttribute(ServletContext.TEMPDIR))
創(chuàng)建臨時(shí)文件時(shí)趾徽,項(xiàng)目一直運(yùn)行正常,然而有一次報(bào)異常:
The temporary upload location [/tmp/tomcat.7104877156386249310.8070/work/Tomcat/localhost/ROOT] is not valid
檢查文件目錄易阳,文件確實(shí)不在附较,檢查代碼,也未發(fā)現(xiàn)問(wèn)題潦俺。實(shí)在不知道原因拒课,只有重啟了服務(wù)器,問(wèn)題也就不再出現(xiàn)事示。
今天偶然查看官方文檔早像,發(fā)現(xiàn)問(wèn)題所在,也提供了解決方法
If you choose to use Tomcat on CentOS be aware that, by default, a temporary directory is used to store compiled JSPs, file uploads etc. This directory may be deleted by tmpwatch while your application is running leading to failures. To avoid this, you may want to customize your tmpwatch configuration so that tomcat.* directories are not deleted, or configure server.tomcat.basedir so that embedded Tomcat uses a different location
前往目錄/etc/cron.daily/
中肖爵,修改 tmpwatch
文件:
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp \
-X '/tmp/tomcat.*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
可以看到添加了一行
-X '/tmp/tomcat.*' 10d /tmp