2010-01-05 1 views
24

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

значение ИСТИНА, если вы хотите Catalina классам мониторов в/WEB-INF/классы/ и/WEB-INF/Библиотека для изменений, и автоматически перезагружает веб-приложение , если обнаружено изменение.

Я использовал этот атрибут в 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> 
+0

Конфигурация в порядке. проверьте мое обновление (и кеш браузера) – Bozho

+1

Таким образом, вы используете IDE, которая берет контроль над сервером приложений? – BalusC

+0

Получил ту же проблему с Tomcat 8 и Java 8. Работал отлично с Tomcat 7 и Java 7. Я также пробовал параметр разработки, но он все еще не работает. Возможно, это вызвано обновлением библиотеки WTP, которое было необходимо для настройки Eclipse Kepler с Tomcat 8. – Chip

ответ

27

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

разработка - Яспер используется в режиме разработки? Если значение 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 файлы. Они будут воссозданы при следующем доступе к ним.

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

+0

Редактирование вопроса, чтобы добавить выдержку из web.xml –

+3

Интересный вопрос: я удалил все файлы из 'CATALINA_HOME/work/Catalina/localhost/contentName/org/apache/jsp' и при доступе к странице создаются новые файлы .java и .class для jsp. Но все же изменения не отражаются. :( –

+0

У нас такая же проблема время от времени, @RakeshJuyal вы нашли какое-то решение? – Marcus

0

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

+0

Не могли бы вы рассказать точную строку? найти, где параметр 'development' установлен в файле' web.xml' сервера проекта. –

2

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

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

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

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

+0

Я думаю, что это сработало для меня ... класс и java-файлы, которые я добавил в рабочий каталог, не были подняты, поэтому я попробовал это и запустил сборку мусора, и, наконец, мои обновления jsp были отражены на сервере – Edd

1

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

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

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> 

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

8

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

Установка «antiResourceLocking» «истина» в файле контекста может предотвратить JSP перезагрузиться с помощью Tomcat (Bugzilla 37668).

Это отражено на Tomcat doc, в «antiResourceLocking» параметра объяснения

+0

Если бы эта проблема и проблема с антиресурсами также была проблемой! –

+0

Это спасло мой день! – pablo

3

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

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

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

<Context> 
+0

Это также работает для статических файлов, таких как html, js и т. д., которые вы может потребоваться обновить независимо от перезапуска приложения. –

0

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

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

Web> META-INF> context.xml

0

Я использую TomEE 1.7.2 на Windows 7 с Eclipse. Решение, которое работало для меня было просто изменение файла web.xml для сервера TomEE в LOCALHOST-конфигурации (в моем IDE), так что развитие 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> 
0

(Tomcat 7.0.62) Я нужно было перейти в CATALINA_HOME/temp/xx -mysite /, найти мой файл jsp в , чтобы это дерево и отредактировало его.

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

0

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

  1. Двойной щелчок на сервере Tomcat от MyEclipse.
  2. Нажмите меню «Публикация» в окне «Обзор».
  3. Выберите радиокнопку «Автоматически публиковать при изменении ресурсов»
  4. введите интервал времени публикации как 1 секунду.

enter image description here enter image description here

Я надеюсь, что это поможет.

-2

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

 Смежные вопросы

  • Нет связанных вопросов^_^