Может ли Eclipse автоматически обновлять приложение Tomcat? - PullRequest
12 голосов
/ 24 июля 2011

Я использую Eclipse Indigo (EE) для создания приложений в среде Java. Vaadin, используя сервер Tomcat 7.0. После изменений в коде я не вижу результат в браузере, поэтому мне нужно нажать опцию « Очистить рабочий каталог Tomcat .. » и подождать, пока Tomcat остановите и запустите сервер.

В противном случае, когда я обновляю страницу приложения, я не вижу никаких изменений. Даже когда я перезагружаю сервер (и когда eclipse автоматически перезапускает его, когда я сохраняю изменения), без очистки каталога tomcat.

Опция " Автоматически публиковать при изменении ресурсов " включена.

Есть ли более быстрый способ сделать это? или я могу автоматизировать этот процесс?

Ответы [ 6 ]

6 голосов
/ 24 июля 2011

В дополнение к ответу Kowser, можно выполнять горячие изменения кода при запуске tomcat в режиме отладки.

В противном случае вы можете провести расследование в JRebel

3 голосов
/ 14 марта 2012

На вкладке «Модули» вашего Tomcat вы можете нажать кнопку «Изменить» и снять флажок «Автоматическая перезагрузка разрешена».

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

2 голосов
/ 24 июля 2011

Нет, другого пути нет.

Вы заметите немедленные изменения только при обновлении JSP / HTML / и т.д .... Классы не будут загружаться / обновляться автоматически. Будет изменено изменение загруженного / созданного класса, когда сервер работает, не так ли? По крайней мере, это не должно быть возможно.

Лучше выполнить модульное тестирование во время разработки чего-либо. Это может помочь вам уменьшить количество раздражающих перезапусков сервера.

0 голосов
/ 15 сентября 2014

Я знаю, что об этом спрашивали и отвечали очень давно. Но используйте эту информацию, если она полезна кому-либо из вас. Я использую Eclipse Kepler и настроил сервер Tomcat 7 внутри Eclipse. Мне не нужно делать какую-либо другую настройку, а просто снять флажок Обновить пути к контексту . Это все. Оставьте другие настройки по умолчанию.

Таким образом, изменения в файлах ресурсов (страницы xhtml, файлы css и т. Д.), А также файлы исходного кода java отображаются в браузере. Веб-приложение будет перераспределено только для файлов классов (не требуется автоматический перезапуск сервера, а также ручное управление).

Расположение Обновление контекстных путей : Дважды щелкните по серверу tomcat на вкладке Сервер . На вкладке Публикация вы найдете этот флажок Обновить пути к контексту .

Никаких других изменений для автоматической публикации не требуется. Это работает как в обычном, так и в отладочном режиме Tomcat.

Снимок экрана из моего затмения ниже:

enter image description here

0 голосов
/ 24 июля 2011

Это может быть возможно. Но ваши настройки немного отличаются от того, что я использую. Я просто использую tomcat + eclipse для разработки сервлетов с использованием Velocity и Torque.

Следующее работает для меня, когда изменения видны в браузере, как только я сохраняю в затмении.

Я предполагаю, что у вас есть каталог проекта, такой как

апач-кот-7.0.11 / WebApps / $ YOU_PROJECT / WEB-INF / классы /

Создайте символическую ссылку с помощью ln -s из каталога проекта eclipse и в каталог классов в WEB-INF.

Затем настройте eclipse для записи всех файлов .class в этот каталог. (Для этого нужно щелкнуть правой кнопкой мыши проект в Eclipse и выбрать «Свойства», а затем путь сборки Java.

В вашем конфигурационном файле $ tomcat / conf / context.xml первый тег должен быть:

<Context allowLinking="true" reloadable="true">

Также добавьте следующее в качестве ребенка, если его там еще нет.

<WatchedResource>WEB-INF/web.xml</WatchedResource>

Это то, что я сделал, но я не уверен, что это работает с вашими инструментами EE.

ps: это решение предполагает, что вы используете linux / unix. Я не знаю, работает ли это с окнами. Основная проблема заключается в том, что eclipse не может записывать файлы классов вне каталога проекта (именно поэтому эта символическая ссылка требуется).

btw: Tomcat может (в зависимости от загрузчика классов, используемых файлов .jar и других сложных деталей) утекать много памяти, когда включена автоматическая перезагрузка, поэтому вы можете захотеть увеличить допустимую память (в основном, permgen) для предотвращения выхода из памяти исключения из кота.

0 голосов
/ 24 июля 2011

Если вы настроили свой проект на использование ant для сборки и развертывания, вы можете просто добавить Ant builder в ваш проект Builders, чтобы запускать сборку ant и развертывать цели каждый раз после сохранения файла.Затем, при условии, что tomcat настроен на поддержку автоматического развертывания, это должно достичь желаемого с двумя оговорками:

  1. Если для создания проекта требуется более нескольких секунд, сборка после каждого сохранения непрактический.
  2. Вы можете исчерпать память для экземпляра tomcat, если одно и то же приложение было развернуто в нем несколько раз.Это может произойти, если tomcat каким-то образом не сможет восстановить всю память из неразвернутых ресурсов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...