Может ли Eclipse автоматически обновлять приложение Tomcat?

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

На вкладке "Модули" вашего Tomcat вы можете щелкнуть "Редактировать" и снять флажок "Разрешить автозагрузку".

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

Ответ 4

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

  • Если ваш проект занимает больше нескольких секунд для сборки, создание после каждого сохранения не является практичным.
  • У вас может быть нехватка памяти для экземпляра tomcat, если одно и то же приложение несколько раз развертывается на нем. Это может произойти, если tomcat каким-то образом не сможет восстановить всю память из незанятых ресурсов.

Ответ 5

Возможно, это возможно. Но ваша настройка немного отличается от того, что я использую. Я просто использую tomcat + eclipse для создания Servlet, используя 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), чтобы предотвратить из memmory исключения из tomcat.

Ответ 6

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

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

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

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

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

enter image description here