最近遇到一件D疼的事,就是项目部分子页面(iframe)偶发性404,你说地址错吧,它也很良民,绝对没有半点出错的迹象。可是tomcat又不报错,迫于无奈,老夫把它换上了jetty,然后转折点来了

要知道我的环境是windows server 2019
然后我们回顾一下jsp的知识虽然jsp是前端页面的代码,可是严格意义上来说,它可是一个servlet来的,故编译后得出个class。它的原理大概是这样:先编译成classtmp文件,然后再重命名为class文件。然后呢,windows 的系统跟linux不一样,如果有一个进程占用了某文件,则此文件处理当前进程外,不会再赋予其他进程写权限,同事安装了everything(文件搜索),我以为是这个进程在生成新文件的时候占用了文件导致classtmp无法被tomcat重命名为class才404的,然后报Unable to rename class file from [xxx_jsp.classtmp] to [xxx_jsp.class]的错,然后不太像(最好也卸掉它吧);最终确认是服务器自带的杀毒软件,它生成文件的时候杀毒软件会占用这个文件然后扫描有没有病毒,占用期间tomcat再去文件名就会报
IOException:Unable to rename class file from [xxx_jsp.classtmp] to [xxx_jsp.class]
解决:把杀毒软件卸掉或者停止服务立马回复正常,不会间歇性404了
解决WindowsServer上的TomcatJSP编译404错误问题
项目中的iframe出现偶发性404错误,检查发现并非地址问题,且Tomcat无报错。更换为Jetty后问题依旧。分析可能是文件占用导致的,经过排查确认是服务器的杀毒软件在编译JSP时占用文件引发的IOException。卸载或停止杀毒软件服务后,问题得到解决,不再出现间歇性404错误。
64万+

被折叠的 条评论
为什么被折叠?



