Tomcat

為什麼編譯失敗時Tomcat會嘗試使用記憶體?

  • March 22, 2010

出於某種原因,當編譯失敗時,Tomcat 似乎正在嘗試訪問其編譯記憶體。

例如,如果我創建一個只包含 的 JSP Hello, <%=world%>!,可以預見的是,我會收到一個錯誤:org.apache.jasper.JasperException: Unable to compile class for JSP. 然而,隨後的請求在 this 和org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP.

此外,如果我創建一個包含 的 JSP Hello!,它當然可以正常工作。如果我修改它包含Hello, <%=name%>!,則響應會在前面提到的編譯錯誤和記憶體的Hello!.

這是怎麼回事?

我終於找到了解決方案。interval顯然,出於性能原因,每次都會檢查 JSP的更改。可以將 Tomcat 配置為檢查每個請求。

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>

感謝阿爾伯特的部落格為我指明了正確的方向。

編輯:我還發現了這個錯誤,這似乎表明涉及到 Tomcat 的一些錯誤行為。

引用自:https://serverfault.com/questions/113476