Горячее развертывание JSP после модификации с помощью Intellij 10.X и tomcat 6.X

У меня есть приложение Hello-World с одним классом java и одним jsp. JSP выводит некоторый текст, встроенный в JSP и из класса java. (Он печатает две вещи)

Я следовал указаниям здесь, чтобы создать и развернуть свое приложение, и оно (в основном) РАБОТАЕТ! Я могу вызвать JSP, и он правильно отображает страницу. Я также могу выполнять горячую замену изменений в классе java после нажатия кнопки перезагрузки Intellij.

Проблема: если я изменю JSP, это не отразится в браузере.

Я проверил следующее:

  • web.xml в каталоге Tomcat/conf не переопределяет значение «разработка». Значение по умолчанию верно.
  • context.xml как в HelloWorld\web\META-INF\context.xml, так и в Tomcat\conf\context.xml имеет reloadable=true
  • Что JSP копируется из C:\code\HelloWorld\web\index.jsp в C:\code\HelloWorld\out\artifacts\HelloWorld_war_exploded\index.jsp при любом изменении немедленно
  • Это не проблема кеша браузера

Есть предположения?


person Tihom    schedule 05.04.2011    source источник
comment
Не могу воспроизвести. Попробуйте ванильную установку Tomcat и посмотрите, поможет ли это. Если нет, отправьте свой проект в службу поддержки JetBrains и предоставьте точные шаги для воспроизведения ошибки.   -  person CrazyCoder    schedule 06.04.2011
comment
Я думаю, что та же проблема и правильное решение: stackoverflow.com/questions/19596779/   -  person Fatih Aksu    schedule 09.04.2015


Ответы (4)


Я использую Intellij IDEA 10.0.3 и столкнулся с той же проблемой. Я решил эту проблему, проверив параметр «Обновлять ресурсы при деактивации фрейма» в настройках вашего сервера tomcat в разделе «Конфигурация запуска/отладки». Надеюсь это поможет.

person cyanglee    schedule 03.05.2011

Когда я отвечаю на этот вопрос, IntelliJ IDEA имеет версию 13.0.2. Варианты немного отличаются, так как этот вопрос был задан. Короче говоря, через панель «Запуск/Отладка конфигураций» для вашего проекта:

  1. Убедитесь, что ваш проект настроен на развертывание как «война взорвана» (через «Развертывание»).
  2. На вкладке «Сервер» установите «При деактивации фрейма» на «Обновлять классы и ресурсы».

Выполнение этих двух шагов по порядку приведет к «горячей замене» проекта, когда IDEA потеряет фокус (т. е. когда вы переключите фокус на веб-браузер).

Полные инструкции доступны по адресу http://www.jetbrains.com/help/idea/2016.1/updating-applications-on-application-servers.html?search=application%20servers

person James Sumners    schedule 07.02.2014
comment
@Madbreaks Я обновил его, но уверен, что он снова сломается. Никто больше не знает, для чего нужен 301. Так что в будущем вам просто придется искать документацию по серверам приложений. - person James Sumners; 13.05.2016

Попробуйте отредактировать Run/Debug Configuration, перейдите на вкладку «Развертывание» и разверните развернутый файл войны.

person Sasa    schedule 05.10.2012
comment
Я пробовал все решения, но на idea12 это кажется единственным рабочим решением. После развертывания взорванной войны нажмите кнопку «Обновить ресурсы» при деактивации фрейма на вкладке «Выполнить/Отладка». - person Rigg802; 28.01.2013

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

В моей ситуации изменения, которые мне нужно было увидеть, были в основном изменениями в html, поэтому я смог инкапсулировать большую часть html в отдельный файл html. Затем я включаю его содержимое в jsp, используя чтение файла. Затем я смог получить немедленные изменения в html, отраженные в браузере, без повторного развертывания. Обратите внимание, что jsp include не помог (он кэшировал html), ему пришлось прочитать файл с помощью программы чтения файлов в помощнике java, чтобы вернуть строку в jsp. (вы можете поместить логику java в jsp, но это совсем не похоже на mvc)

Одним из предостережений в этом подходе является объединение переменных данных в файл read html. Есть несколько подходов, которые вы можете использовать. 1. создайте свой собственный алгоритм замены строки, и пусть ваше вспомогательное приложение динамически заменит строки что офф).

person TroyJ    schedule 22.04.2011