出于某种原因,看起来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的一些越野车行为。