Любой способ работы с Eclipse WTP, который не означает повторное развертывание приложения _WHOLE_ при изменении страницы JSP.

Я перенес веб-приложение из MyEclipse в Eclipse WTP, и сейчас я нахожусь в середине первого крупного обновления базы кода и веб-страниц после миграции, и меня, откровенно говоря, сводит с ума тот факт, что сохранение страницы JSP вызывает повторное развертывание всего приложения, так как это требует времени и что мое внутреннее соединение не выдерживает сериализацию-десериализацию объекта сеанса (что нетривиально исправить). В дополнение к этому JSP-редактор безумно медленный, поэтому мне часто приходится делать паузу, чтобы позволить редактору наверстать упущенное, куда идут мои правки в небольшом JSP с использованием JavaServer Faces. Отключение проверки не помогло.

Динамический веб-проект Eclipse зависит от нескольких проектов библиотеки eclipse, поэтому я не могу просто сказать, например. Jetty использовать папку WebRoot, так как в пути к классам отсутствуют некоторые зависимости.

Вопрос в том:

  • Есть ли способ работы - ЛЮБОЙ способ работы - с системой Eclipse WTP, который НЕ предполагает повторного развертывания всего при каждом сохранении любого файла?

Я могу использовать Tomcat 5.5 или Jetty 6 в качестве серверов.


РЕДАКТИРОВАТЬ: Было бы очень приятно иметь JSP-редактор, который мог бы идти в ногу со временем...


РЕДАКТИРОВАТЬ: рассматриваемые JSP-страницы содержат JSF-теги (myfaces 1.1.4, tomahawk 1.1.9), если это имеет значение?


person Thorbjørn Ravn Andersen    schedule 12.03.2010    source источник
comment
Я пытаюсь воспроизвести вашу проблему и не могу. Я на Mac, использую Eclipse IDE для разработчиков Java EE на основе Eclipse 3.5 SR2 и Tomcat 6.0.20. Мое веб-приложение перезагружается, когда я изменяю и сохраняю сервлет, но не когда я изменяю и сохраняю JSP. Вы можете открыть вопрос с   -  person vkraemer    schedule 18.03.2010
comment
Эта ветка похожа на проблему, которую, я думаю, вы описываете... eclipsezone.com/ eclipse/forums/t76964.html. Вы не используете WTP 1.0, верно?   -  person vkraemer    schedule 18.03.2010
comment
@vkraemer, если серверный адаптер Tomcat 6.0 работает лучше, чем адаптер Tomcat 5.5, я попытаюсь исправить любую проблему, которая была с Tomcat 6.   -  person Thorbjørn Ravn Andersen    schedule 18.03.2010
comment
(и с помощью подходящего использования переходных и нулевых проверок я обошел потерянное внутреннее соединение)   -  person Thorbjørn Ravn Andersen    schedule 18.03.2010
comment
В ПОРЯДКЕ. Итак, теперь эта среда работает лучше для вас? Если это не работает должным образом, вы можете предоставить дополнительную информацию о своей среде и т. д., чтобы люди могли лучше понять, что может быть основной причиной.   -  person vkraemer    schedule 18.03.2010
comment
Я провел быстрый поиск и обнаружил, что другие люди сталкивались с подобной проблемой... но я не нашел основной причины или чего-то подобного.   -  person vkraemer    schedule 18.03.2010
comment
Та же проблема с JBoss5 и Eclipse Luna с использованием JBoss Tools   -  person Nicholas DiPiazza    schedule 05.06.2015


Ответы (5)


Я добавлю еще одно предложение, которое больше похоже на обходной путь.

Вы можете использовать подключаемый модуль FileSync для синхронизации каталогов bin и webroot с контейнером сервлетов. . Таким образом, вам придется использовать исходную установку, а не метаданные рабочей области. Затем, после запуска сервера в режиме отладки, все развертывается в горячем режиме.

Я успешно использовал этот подход с Glassfish 2.


Другое дело проверить параметры конфигурации сервера в вашем Servers проекте (у него там должна быть папка). Возможно, какая-то опция debug или hot-deploy отключена.


Что касается скорости редактора JSP — ну, первое, что нужно сделать, это отключить проверку, и вы это сделали. Честно говоря, мои jsp-страницы (содержащие теги jsf и фактически использующие фаслеты) не имеют серьезных проблем со скоростью. Возможно, использовать новую установку?

person Bozho    schedule 20.03.2010
comment
Выбран не для решения проблемы напрямую, а как лучшая альтернатива использованию системы WTP. - person Thorbjørn Ravn Andersen; 22.03.2010

в настройках вашего сервера Tomcat в eclipse вы должны включить параметр «Обслуживать модули без публикации» (см. ниже, как это сделать)

это решение, которое я использую, и оно позволяет мне сразу просматривать изменения в JSP без повторной публикации или чего-либо еще (в Tomcat 5.5 + обычный динамический веб-проект + JSP находятся в каталоге WebContent), поэтому я не схожу с ума при разработке приложений Java:

как это сделать:

  • открыть вид сервера
  • дважды щелкните на своем сервере, чтобы открыть настройки сервера
  • в разделе «Публикация» (вверху справа) выберите параметр «Никогда не публиковать автоматически» (как сказано в некоторых других ответах на ваш вопрос), чтобы избежать действия публикации, когда вы что-то меняете.
  • это самое ВАЖНОЕ: в разделе «Параметры сервера» (внизу слева) выберите параметр «Обслуживать модули без публикации». теперь ваши изменения подхватываются без повторного развертывания

ОБНОВЛЕНИЕ: вы также должны убедиться, что библиотеки, от которых вы зависите (те, которые находятся на вашем пути сборки), «скопированы» в WEB-INF/lib при разработке в Eclipse (сделайте это, выбрав соответствующие файлы JAR/проекты в зависимостях модуля Java EE). раздел в диалоговом окне «Настройки» вашего веб-проекта). со всеми этими настройками tomcat запустит веб-приложение из вашего проекта рабочей области с каталогом WebContent в качестве корня веб-приложения.

наслаждаться

person Stefan De Boey    schedule 19.03.2010
comment
Мне не нужно было включать опцию «обслуживать модули без публикации» или отключать автоматическую публикацию, чтобы увидеть изменения JSP, просто перезагрузив страницу в моем браузере. - person vkraemer; 19.03.2010

Вы можете отключить автоматическую публикацию в Eclipse, если вам нужно:

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

Это позволит избежать проблемы «публикации после каждого сохранения». Однако, если это отключено, вам придется вручную развертывать каждый раз, когда вы хотите, чтобы ваши изменения отображались на вашем сервере.

person BCunningham    schedule 12.03.2010
comment
Я подозреваю, что он ищет более быстрого развертывания. MyEclipse будет только «повторно развертывать» измененные файлы, поэтому вы можете изменить файл, сохранить его, а затем он окажется в папке вашего веб-сервера. Кажется, что WTP каждый раз выполняет полное развертывание, и это не изменится, если вы сделаете это вручную или автоматически. - person Mikezx6r; 12.03.2010
comment
Да, вернее, в рабочей области веб-сервера обновляется только отредактированный мной JSP-файл, а не переустанавливается все приложение. Именно так работает MyEclipse, позволяя сохранять файл JSP и мгновенно перезагружать его в браузере, а цикл редактирования WTP просто невыносимо медленнее. - person Thorbjørn Ravn Andersen; 12.03.2010

Мой совет:

Убедитесь, что вы используете последнюю выпущенную версию Eclipse/WTP и Tomcat. Вы можете захотеть загрузить новые биты в отдельное место и рабочую область. Не переходите к последнему и лучшему вехе/кандидату на выпуск... Я говорю о битах, которые вы можете получить с http://eclipse.org/downloads/...

Посмотрите, сможете ли вы воспроизвести проблему с простейшим динамическим веб-проектом. Если можете, сообщите об ошибке на Eclipse.org. Если вы не можете воспроизвести проблему с самым простым приложением, загрузите свое приложение в эту новую среду разработки и посмотрите, решит ли это проблему. Если это не так, то проблема, вероятно, связана с вашим проектом.

person vkraemer    schedule 18.03.2010
comment
Спасибо за ваш развернутый комментарий. Я работал с Eclipse 3.5.1 с последними обновлениями, и, видимо, так все и работает. Также кажется, что серверный адаптер Glassfish v3 работает так, как я ожидаю, в отношении jsp-страниц (после устранения ошибок, характерных для него), поэтому я попробую. - person Thorbjørn Ravn Andersen; 18.03.2010
comment
@ Thorbjørn: если вы переходите на GF v3, вы также можете найти преимущество в сохранении сеанса. Последнее, что я знал, и плагины NB, и Eclipse использовали эту функцию v3, которая позволяет вам изменять сервлеты почти так же свободно, как jsp-страницы. - person vkraemer; 18.03.2010
comment
Переход на GF3 планировался довольно давно из-за внедрения зависимостей в JEE6, что решает некоторые проблемы с логистикой, которые у нас есть, с ремонтопригодностью. - person Thorbjørn Ravn Andersen; 18.03.2010
comment
Я могу жить с поведением адаптера Glassfish. Он по-прежнему повторно развертывает все приложение, но это не невыносимо. - person Thorbjørn Ravn Andersen; 22.03.2010

Это странно, это не то, что я испытываю. Я перепроверил это с помощью Eclipse IDE для разработчиков Java EE (идентификатор сборки: 20090920-1017) и Tomcat 5.5.28 (а также Tomcat 6.0.28), и я не могу воспроизвести проблему:

  • изменение файла Java ДЕЙСТВИТЕЛЬНО перезагружает контекст ~но~
  • изменение JSP НЕ перезагружает контекст

(и это без изменения каких-либо конкретных настроек моих серверов Tomcat в Eclipse).

Проблема выглядит так или иначе связанной с вашим проектом или вашей машиной. Это происходит с любым проектом на вашей машине? Можно ли воспроизвести на другой машине?

person Pascal Thivent    schedule 19.03.2010
comment
Этот конкретный файл JSP содержит теги JSF (myfaces 1.1.4, tomahawk 1.1.9 — как обсуждалось ранее). Это может иметь значение? - person Thorbjørn Ravn Andersen; 22.03.2010
comment
Некоторые эксперименты не избавили от развертывания всего веб-приложения. Вздох. - person Thorbjørn Ravn Andersen; 22.03.2010