Почему мои изменения 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>
Ответы
Ответ 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 старше своей страницы сервлета или нет, и на основании этого она решает, нужны ли изменения или нет.