Интеграция tomcat и eclipse как среда горячего развертывания - PullRequest
87 голосов
/ 16 июня 2009

Я бы хотел настроить eclipse и tomcat интегрированным образом, чтобы изменения в моих JSP и сервлетах (если это возможно) отражались немедленно, без необходимости развертывания.

Хорошо, это один из тех вопросов, на которые есть множество ответов по всему Интернету, но все они кажутся разными. (используйте плагин Sysdeo, плагин JBOss, делайте вещи с устаревшим Eclipse, используйте вместо этого MyEclipse и т. д.), и я не смог найти 1 определенный ресурс для ссылки. Итак, для моей пользы, какова самая простая и рекомендуемая процедура для ее настройки?

Это предполагает, что у меня есть Eclipse и Tomcat, работающие независимо друг от друга. На самом деле мне удалось интегрировать их без развертывания, используя инструкции здесь: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html

Версия Eclipse Версия: 3.4.2 (Ганимед) Tomcat v6.0.20

Ответы [ 16 ]

73 голосов
/ 31 мая 2011

Есть два варианта.

Во-первых, Eclipse позволяет вам сделать это с небольшим изменением конфигурации (см. Также подробное сообщение )

  • добавить Tomcat в список серверов
  • сделать проект "Динамический веб-проект" (либо через мастер создания, либо через раздел фасетов в настройках)
  • добавить проект в tomcat и настроить его "сборку развертывания"
  • дважды щелкните tomcat из списка, чтобы открыть настройки
  • Измените «Публикация» на «Никогда не публиковать автоматически» (это означает, что сервер не будет перезагружен при нажатии Ctrl + S)
  • запустить tomcat в режиме отладки

Это по-прежнему будет отражать изменения кода, но не будет перезагружать сервер.

Во-вторых, я давно использовал плагин FileSync :

  • настроить плагин для отправки всех классов из директории bin в WEB-INF/classes вашей установки tomcat (это почти то же самое, что и настройка сборки развертывания)
  • настроить все остальные ресурсы для перехода в их соответствующие местоположения
  • опционально, экстернализуйте все абсолютные пути из настроек расположения файловой синхронизации в одну переменную и сконфигурируйте эту переменную в eclipse (таким образом, вы сможете также зафиксировать настройки файловой синхронизации, если все члены используют eclipse)
  • добавить Tomcat в список серверов в eclipse, настроить для параметра «Местоположения серверов» значение «Использовать установку Tomcat» (экран открывается, если дважды щелкнуть tomcat в списке серверов)
  • запустить tomcat в режиме отладки

У меня так отлично работает. Каждое неструктурное изменение отражается немедленно, без повторного развертывания.

Обновление:
Вы можете прочитать больше о методах горячего развертывания здесь .
Я также создал проект , который легко синхронизирует рабочую область с контейнером сервлета.

29 голосов
/ 16 июня 2009

Просто позвольте eclipse записывать файлы классов непосредственно в каталог $ TOMCAT / webapps / MyWebApp / WEB_INF / classes. Затем настройте apache-tomcat, чтобы проверить, обновлены ли файлы классов, и перезагрузите их, если они есть.

Чтобы настроить tomcat на автоматическую перезагрузку класса при его изменении, вам нужно

изменить $TOMCAT/conf/context.xml и установить:

<Context reloadable="true"> 

Возможно, вам также придется отредактировать и перезагрузить файл webapps/$YourWebApp/web.xml и указать:

<web-app reloadable="true">

Не могу вспомнить, нужны ли оба изменения, но я так настроил мой tomcat-6.0.18 для автоматической перезагрузки.

8 голосов
/ 16 июня 2009

Отказ от ответственности : я просто счастливый клиент, я не работаю на Zero Turnaround и не имею к ним никакого отношения.

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

  • Добавление / удаление методов
  • Добавление / удаление конструкторов
  • Смена интерфейсов
  • Добавление / удаление реализованных интерфейсов

Это коммерческий , ( информация о ценах , $ 550 / год по состоянию на июнь 2018 года), и у него есть множество плагинов для сторонних платформ, включая :

  • Guice
  • Весна
  • Распорки 2

Вы получаете бесплатную пробную версию совершенно безболезненно - я предлагаю вам попробовать.

3 голосов
/ 07 февраля 2012

В представлении серверов создайте новый сервер, пока не добавляйте к нему ни одного ресурса (проекта). Дважды щелкните на сервере в расположении серверов. Выберите «Использовать установку Tomcat». Измените «Путь к развертыванию» в каталоге развертывания tomcat (например, c: \ server \ Tomcat 7.0.14 \ webapps). Расширить «Издательский раздел». Установите флажок «Автоматически публиковать после события сборки». Сохрани и закрой. В меню затмения выберите «Проект -> Автоматическая сборка». В представлении серверов щелкните правой кнопкой мыши свой сервер, «Добавить и удалить», опубликуйте свой проект.

3 голосов
/ 16 июня 2009

Измените свое рабочее пространство в Eclipse на \ tomcat \ webapps Так как это только для вашей работы, это должно работать нормально. Все изменения, которые вы вносите в Eclipse, находятся в одном каталоге. Tomcat ищет приложения для развертывания

.
2 голосов
/ 08 мая 2012

Что работает для меня здесь:

context.xml вот так:

<Context path="/myapp" docBase="myapp" debug="5"
    reloadable="false" antiResourceLocking="false" antiJARLocking="true">
<!-- this because i´m using Spring 3.1 with Tomcat -->
    <Loader     loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" />

</Context>

Затем на вкладке «Серверы» в Eclipse, на вкладке «Модули» я отключил «Автозагрузку» для всех развертываемых модулей.

Также разрешите настройку по умолчанию для автоматической публикации.

И использует Maven с WTP, не забудьте оставить содержимое src / main / resources, потому что Eclipse настаивает на исключении содержимого этой папки из окончательной сборки.

Только со всем этим у меня есть полные (VM) классы горячего развертывания с ресурсами горячего развертывания !!!

2 голосов
/ 16 июня 2009

Почему бы не использовать интегрированный сервер tomcat от with в eclipse, если это только для разработки? Вы можете настроить серверы в окне-> предпочтения. После настройки, если у вас есть jsp с именем page.jsp, вы можете щелкнуть по нему правой кнопкой мыши и выбрать запустить на сервере. В настройках-> общие-> веб-браузер вы можете выбрать погоду, чтобы использовать встроенный или внешний браузер. Внесите некоторые изменения в свой jsp, сохраните и обновите страницу из браузера. Изменения будут автоматически отражены после сохранения и обновления браузера.

1 голос
/ 16 июня 2009

В вашей среде разработки просто укажите серверу Tomcat для поиска JSP в любом каталоге, в котором вы их разрабатываете. Как только вы сохраните файл, вы сможете увидеть изменения.

0 голосов
/ 03 октября 2017

В Eclipse, нажмите на Project в верхнем меню и убедитесь, что выбрано «Автоматически строить». Это исправило мою проблему. Я использовал Eclipse с Tomcat, используя мои метаданные рабочей области. Я также запускал Maven в проекте Dynamic Web Module. Для подтверждения добавьте ваше приложение в Tomcat. Запустите Tomcat из Eclipse. Убедитесь, что ваше приложение развернуто и работает. Откройте вкладку Консоль в Eclipse. Внесите изменения в ваше приложение. Через пару секунд вы увидите, что ваши изменения будут автоматически собраны и развернуты в Tomcat.

0 голосов
/ 06 мая 2016

Мне удалось заставить это работать в моей среде разработки с помощью Spring Loaded агента JVM. Хотя я разрабатываю веб-приложения Spring, в описании этого проекта упоминается, что это

можно использовать с любым байт-кодом, который может работать на JVM

Используя следующую настройку, я смог получить изменения для автоматической публикации на подключенном экземпляре Tomcat (обычный метод Eclipse WTP). Я использую Spring Tool Suite 3.7.3 на основе Eclipse Mars.2 (4.5.2).

  1. Загрузите последнюю версию JAR Spring Loaded из их проекта Github . Это было проверено с springloaded-1.2.5.RELEASE.jar.
  2. Настройка сервера Tomcat в Eclipse как обычно (протестировано с Tomcat 8.0.30)
  3. Откройте страницу конфигурации Tomcat Server в Eclipse (дважды щелкните на экземпляре сервера на вкладке «Servers»).
  4. В разделе «Параметры сервера» снимите флажок «Автоматическая перезагрузка модулей по умолчанию».
    • Примечание: Если у вас уже есть веб-модули, добавленные на сервер, вам может потребоваться отключить «Автоперезагрузку» на них по отдельности через вкладку «Модули» (в нижней части окна страницы конфигурации).
  5. В разделе «Общая информация» нажмите «Открыть конфигурацию запуска»
    • На вкладке «Аргументы» в конце «Аргументы виртуальной машины» добавьте следующее: -javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
    • Чтобы включить просмотр файлов JAR в дополнение к файлам .class проекта, настройте аргумент -Dspringloaded=watchJars= VM для комментариев к этой проблеме .

Запустите сервер и опубликуйте на нем проекты Dynamic Web Application как обычно. Я снова смог проверить это с помощью веб-приложений Spring. Например, изменение кода, добавление / вычитание методов и т. Д. В классах @Controller были применены практически мгновенно после того, как я сохранил файл, а Eclipse строит и публикует измененный класс. Наконец, в разделе часто задаваемых вопросов проекта Spring Loaded упоминалось несколько случаев, когда вещи не будут перезагружаться, поэтому для этого потребуется перезапуск сервера / приложения. Но эти исключения встречаются гораздо реже.

Еще одно примечание: это НЕ работает со встроенным сервером Pivotal tc или сервером VMware vFabric tc, который поставляется с STS. Для этих серверов есть опция «Включить перезагрузку на Java-агенте (экспериментальная)», но она использует более раннюю версию 1.2.0 Spring Loaded, которая у меня не работала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...