Подтвердить что ты не робот

Почему мои изменения JSP не отражаются без перезапуска Tomcat?

Я редактирую JSP файлы, которые находятся непосредственно внутри tomcat/webapps/myapp/WEB-INF, но чтобы увидеть изменения, я должен перезапустить сервер. Насколько мне известно, изменения JSP не требуют перезагрузки сервера. Единственная конфигурация, которая была связана с автоматической перезагрузкой, - reloadable = "true"

Установите значение true, если вы хотите, чтобы Catalina контролировать классы в /WEB -INF/classes/ и/WEB-INF/lib для изменений и автоматически перезагружать веб-страницы приложение, если обнаружено изменение.

Я использовал этот атрибут в context.xml, но проблема все еще сохраняется. Какая может быть другая возможная причина не обнаруживать изменения в файлах JSP без перезапуска?

@Bozho: Это выдержка из web.xml. Мне нужно что-то изменить?

 <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
4b9b3361

Ответ 1

В документах tomcat см. параметр development. Он должен быть установлен в true, чтобы перезагрузить jsps.

development - Используется ли Джаспер в режиме разработки? Если значение true, частота, на которую проверяются JSP для модификации, может быть указана с помощью параметра модификацииTestInterval parameter.true или false, по умолчанию true.

Это в вашем CATALINA_HOME/conf/web.xml

Кроме того, если вам нужно обновить jsp в рабочей среде без перезагрузки, вы можете перейти в CATALINA_HOME/work/Catalina/localhost/contentName/org/apache/jsp и удалить файлы your_jsp.java и your_jsp.class. Они будут воссозданы при следующем доступе к ним.

Изменить: после предоставления вашей конфигурации и комментариев о том, что вы не обновляете контент, у меня есть еще один: очистить кеш браузера или открыть страницу из другого браузера.

Ответ 2

Еще более поздний ответ...

Настройка "antiResourceLocking" на "true" в файле контекста может помешать перезагрузке JSP Tomcat (Bugzilla 37668).

Это описано в документе Tomcat в описании параметра "antiResourceLocking"

Ответ 3

Просто понять, хотя это может быть, вот что означает "настройка развития на истину" (подробнее для быстрой справки):

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- Add the following init-param -->
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

И затем перезапустите.

Ответ 4

У меня была та же проблема и исправлена ​​проблема. Убедитесь, что в conf/context.xml у вас нет следующей конфигурации

<Context antiJARLocking="true" antiResourceLocking="true">

Если у вас есть это, удалите оба antiJARLocking="true" antiResourceLocking="true", просто напишите

<Context>

Ответ 5

Поздний ответ, любой может найти это полезным, хотя.

Проверьте разрешения на папку Tomcat, я попробовал много других решений, и это не сработало.

Наконец, я дал свое разрешение "Пользовательский аккаунт" "Полный доступ" к папке Tomcat, и Tomcat взял изменения, когда я вносил изменения в JSP. Я предполагаю, что вы используете Windows. Обоснованием было следующее: всякий раз, когда вы вносите изменения в JSP, его необходимо скомпилировать и развернуть (записать) в папку webapps. Если в этой папке не разрешено "писать", она будет терпеть неудачу. Это происходило в моем случае. Поэтому, если reloadable = true и development = true в context.xml не работают, попробуйте это разрешение.

Я использую Tomcat 7 в Windows 7.

Ответ 6

Синхронизировать время сервера и клиента

вы можете проверить время своего сервера и время системы. Для меня несколько дней назад после правильного изменения времени сервера. Он отражал изменения файлов .jsp.

Ответ 7

Вам нужно будет перейти на проект сервера в Eclipse и отредактировать файл web.xml и установить "development" в true.

Ответ 8

Откройте файл context.xml в папке META-INF и установите antiJARLocking в значение false.

Дерево каталогов должно быть следующим:

Веб > META-INF > context.xml

Ответ 9

Я использую TomEE 1.7.2 в Windows 7 с Eclipse. Решение, которое сработало для меня, просто изменило файл web.xml для сервера TomEE в localhost-config (в моей среде IDE), так что параметр init init разработки прав:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

Ответ 10

(Tomcat 7.0.62) Мне пришлось перейти в CATALINA_HOME/temp/xx-mysite/, найти файл jsp в дереве каталогов , и отредактировать его.

xx - случайный (?) префиксный номер, в моем случае 11, но на каждом сайте был один.

Ответ 11

Я тоже столкнулся с этой проблемой при выполнении jsp-изменений в myeclipse, которые не отражают приложение во время работы. Надеюсь, эти проверки помогут вам.

  • Дважды щелкните на Tomcat Server из MyEclipse.
  • откройте меню "Публикация" в окне "Обзор".
  • Выберите кнопку "Автоматически публиковать при изменении ресурсов"
  • введите интервал времени публикации как 1 секунду.

введите описание изображения здесь введите описание изображения здесь

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

Ответ 12

На самом деле jsp engine проверяет, была ли страница jsp старше своей страницы сервлета или нет, и на основании этого она решает, нужны ли изменения или нет.