今天在修改了某个jsp后发现:tomcat容器启动后,访问该jsp返回的结果依然是修改之前的内容,略感不解,于是乎研究了一下Tomcat中work目录的作用。
Tomcat中work目录的作用:
看到这似乎豁然开朗了,之后看了一下work中文件的最后修改时间,居然比当前时间还大,由此判断有人在某时修改过系统时间(修改到了将来),而恰巧当时这个jsp页面进行了第一次的编译,所以产生了开头所描述的现象。
进一步研究一下jsp编译的相关内容:
当请求jsp页面时,Tomcat将请求交由JspServlet来处理,我们来看一下在JspServlet的service()方法
1 if (options.getDevelopment() || firstTime ) {
2 synchronized (this) { 3 if (firstTime) { 4 firstTime = false; 5 } 6 ctxt.compile(); 8 } 9 }
关键就在Compiler的isOutDated(boolean checkClass) 的判断上 。 (责任编辑:IT) |