Может ли веб-приложение Tomcat программно изменить параметр "development = true" в сервлете jsp? - PullRequest
1 голос
/ 24 марта 2009

Я имею в виду следующий параметр файла web.xml Tomcat:

<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>
         . . . 
</servlet>

Есть ли способ для веб-приложения программно переключать это значение - по крайней мере, для себя, если не для всех веб-приложений - так что его можно временно изменить на работающем веб-сервере без остановить и перезапустить Tomcat?

Если это не удастся, есть ли способ заставить одну JSP перекомпилироваться, не дожидаясь нескольких недетерминированных минут, которые могут потребоваться в противном случае? Я знаю, что если вы измените JSP, он в конечном итоге (в течение нескольких минут) будет скомпилирован, но я ищу способ сказать: «При следующем доступе перекомпилируйте его».

ПРИМЕЧАНИЕ. Решения, для которых требуется перезапуск веб-приложения или которые приведут к перезапуску веб-приложения или перезапуску контейнера, мне не помогут. Я уже знаю, как сделать это (вручную) для случаев, когда я могу перезапустить Tomcat. Я пытаюсь временно переключить значение «разработки» со значения «ложь» на значение «истина» в экземпляре Tomcat в рабочей среде, где я не могу прерывать текущие сеансы.

Ответы [ 2 ]

1 голос
/ 09 сентября 2009

Поведение по умолчанию JspServlet заключается в проверке исходного JSP при каждом обращении к нему, и, если он изменился, перекомпилировать. Этот параметр отлично работает в 99% случаев, включая разработку и производство. При очень высокой нагрузке отключение этой функции может ускорить процесс, но я пока не вижу в этом необходимости.

Если вы видите поведение, когда JSP в конечном итоге перекомпилируется, значит, вы должны настроить Tomcat на такое поведение. Вы включили флаг фоновой перекомпиляции, как подробно здесь ? Этот параметр может неявно отключать автоматическую перекомпиляцию при доступе.

0 голосов
/ 24 марта 2009

Насколько я знаю, если вы измените web.xml веб-приложения, контейнер (tomcat) будет перезапущен автоматически. Также значения параметров в web.xml могут быть прочитаны только программно.

Если вы хотите, чтобы ваш JSP перекомпилировался сразу, просто запросите URL этого JSP или измените значение по умолчанию ModificationTestInterval для JSP на 0 секунд:

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

. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...