Назад | Перейти на главную страницу

Почему Tomcat пытается использовать кеш при сбое компиляции?

По какой-то причине кажется, что Tomcat пытается поразить свой кеш компиляции, когда компиляция не удалась.

Например, если я создаю 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.

Кроме того, если я создам JSP, содержащий Hello!, это, конечно, отлично работает. Если я изменю, он содержит Hello, <%=name%>!, ответ будет чередоваться между упомянутой ранее ошибкой компиляции и кешированным Hello!.

В чем дело?

Наконец-то я нашел решение. Очевидно, JSP проверяются каждые interval для изменений по соображениям производительности. Вместо этого можно настроить 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.