为什么Tomcat在编译失败时尝试使用caching?

出于某种原因,看起来Tomcat在编译失败时正在尝试编译高速caching

例如,如果我创build一个只包含Hello, <%=world%>!的JSP Hello, <%=world%>! ,可以预料的是,我得到一个错误: org.apache.jasper.JasperException: Unable to compile class for JSP 。 然而,后续的请求在这个和org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP之间交替org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP

而且,如果我创build一个包含Hello!的JSP Hello! ,它当然工作得很好。 如果我修改它包含Hello, <%=name%>! ,响应在前面提到的编译错误和caching的Hello!之间交替出现Hello!

这是怎么回事?

我终于find了解决办法。 显然,由于性能原因,每interval检查一次JSP的变化。 可以configurationTomcat来检查每个请求。

web.xml ,查找:

 <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 

并添加:

  <init-param> <param-name>development</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>modificationTestInterval</param-name> <param-value>0</param-value> </init-param> 

感谢albert的博客 ,指引我朝着正确的方向前进。

编辑:我也发现这个错误 ,这似乎表明,涉及的一部分Tomcat的一些越野车行为。