it-swarm.com.ru

Интеграция Tomcat и Eclipse как среда быстрого развертывания

Я хотел бы настроить 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

87
udit

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

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

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

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

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

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

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

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

72
Bozho

Просто позвольте 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">

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

29
Martin Tilsted

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

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

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

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

  • Guice
  • Весна
  • Struts 2

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

8
Robert Munteanu

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

3
PaganSensei

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

3
ticu0000

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

2
Jared

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

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) классы hot-deploy с ресурсами hot-deploy !!!

2
chuckedw

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

1
Cameron

можем ли мы использовать приведенную ниже опцию? Дважды щелкните по Серверу в Eclipse -> Расположение сервера -> Использовать установку Tomcat . Он берет на себя управление установкой Tomcat . Для изменений Классы Java.

0
Tushar Sagar

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

Tomcat будет периодически обнаруживать изменения и повторно развертывать ваше приложение.

Существует также способ отладки вашего приложения, поэтому я скромно думаю, что это хорошее решение. 

Я задокументировал свое решение здесь , для всех, кто заинтересован.

0
Raul Luna

В случае, если вы спешите:

  1. установите флажок «никогда не публиковать автоматически» в Tomcat (другой контейнер) в Eclipse.
  2. запустить Tomcat (другой контейнер) в режиме отладки.

вуаля! :)

0
Sachin Verma

Возможно, это не лучший способ, но он работает для меня.

  • $ Tomcat/CONF/Каталина/локальный/.xml
  • $ ContextPath/WebApp/веб/WEB-INF/Lib/*. Баночка
  • $ ContextPath/WebApp/веб / 
  • $ EclispeWorkbench/проект-сервлет/SRC /
  • $ eclispeWorkbench/project-servlet/servlet.jardesc (следует экспортировать jar в lib dir в $ contextPath)
  • $ EclipseWorkbench/проект-JSP /

Я использую команду rsync для синхронизации изменений из моего проекта jsp в $ contextPath.

Используйте удаленную отладку в Eclipse для Tomcat, которая позволит ограниченную горячую замену кода. Если вы измените статические поля или добавите методы, вам нужно будет экспортировать jar и перезапустить контекст.

0
TJR

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

0
NLessani

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

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

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

0
martian111

Вы открыты для использования Jetty в целях разработки?

Если это так, то использовать его с Maven довольно просто - просто запустите mvn jetty:run

0
matt b