Я хотел бы настроить 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
Ответы:
Есть два варианта.
Во-первых, Eclipse позволяет это сделать с небольшим изменением конфигурации (см. Также этот подробный пост )
Это по-прежнему будет отражать изменения кода, но не перезапустит сервер.
Во-вторых, давно пользуюсь плагином FileSync :
WEB-INF/classes
вашу установку tomcat (это почти то же самое, что и настройка сборки развертывания)У меня это прекрасно работает. Каждое неструктурное изменение отражается немедленно, без повторного развертывания.
Обновление:
вы можете узнать больше о методах горячего развертывания здесь .
Я также создал проект, который легко синхронизирует рабочую область с контейнером сервлета.
источник
Modules
вкладку в конфигурации сервера, затем нажмитеedit
, снимите флажокauto deploy enabled
, я думаю, что это самый простой способ. PS: ваш первый способ мне не подходит.Просто позвольте 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 на автоматическую перезагрузку.
источник
Context
элементы в файле server.xml, но он должен отслеживать / WEB-INF / classes / и / WEB-INF / lib для любых изменений. Где вы читали об атрибутеweb-app
элемента?Отказ от ответственности : я просто счастливый клиент, я не работаю в Zero Turnaround и никоим образом не связан с ними.
Обратите внимание на JRebel - он позволяет писать код без перезапуска веб-приложений. Это в основном работает путем инструментовки ваших классов и адаптации их изменений. Он обрабатывает гораздо больше случаев, чем горячее развертывание , в том числе:
Он коммерческий ( информация о ценах , 550 долларов в год по состоянию на июнь 2018 года), и в нем есть множество плагинов для сторонних фреймворков, в том числе:
Вы получаете бесплатную пробную версию довольно безболезненно - я предлагаю вам попробовать.
источник
Измените свое рабочее пространство в Eclipse на \ tomcat \ webapps. Поскольку оно предназначено только для вашей работы, это должно работать нормально. Какие бы изменения вы ни вносили в Eclipse, они находятся в том же каталоге, что tomcat ищет приложения для развертывания.
источник
В представлении серверов создайте новый сервер, пока не добавляйте на сервер никаких ресурсов (проектов). Дважды щелкните сервер в расположении серверов. Выберите «Использовать установку tomcat». Измените «Путь развертывания» к каталогу развертывания Tomcat (Пример: c: \ server \ Tomcat 7.0.14 \ webapps). Расширить «Издательский раздел». Установите флажок «Автоматически публиковать после события сборки». Сохрани и закрой. В меню eclipse отметьте «Проект -> Создавать автоматически». В представлении серверов щелкните правой кнопкой мыши на своем сервере, «Добавить и удалить», опубликуйте свой проект.
источник
Почему бы не использовать интегрированный сервер Tomcat из eclipse, если он предназначен только для разработки? Вы можете настроить серверы в окне-> настройки. После настройки, если у вас есть jsp с именем page.jsp, вы можете щелкнуть его правой кнопкой мыши и выбрать запускать на сервере. В настройках-> Общие-> Веб-браузер вы можете выбрать погоду для использования встроенного браузера или внешнего. Внесите некоторые изменения в свой jsp, сохраните и обновите страницу в браузере. Изменения будут автоматически отражены после сохранения и обновления данных в браузере.
источник
Что мне здесь подходит:
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 настаивает на исключении содержимого этой папки из окончательной сборки.
Только при всем этом я получил полноценные (ВМ) классы hot-deploy с ресурсами hot-deploy !!!
источник
В своей среде разработки просто укажите свой сервер Tomcat для поиска JSP в любом каталоге, в котором вы их разрабатываете. Как только вы сохраните файл, вы сможете увидеть изменения.
источник
Мне удалось заставить это работать в моей среде разработки с помощью агента Spring Loaded JVM. Хотя я разрабатываю веб-приложения Spring, в описании этого проекта упоминается, что это
Используя следующую настройку, я смог получить изменения для автоматической публикации в подключенном экземпляре Tomcat (обычный метод Eclipse WTP). Я использую Spring Tool Suite 3.7.3 на основе Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
файлам проекта , настройте-Dspringloaded=watchJars=
аргумент VM в соответствии с комментариями к этой проблеме .Запустите сервер и опубликуйте на нем проекты динамических веб-приложений, как обычно. Опять же, я смог проверить это с помощью веб-приложений Spring. Например, изменение кода, методы добавления / вычитания и т. Д. В классах @Controller применялись почти сразу после того, как я сохранил файл и Eclipse построил и опубликовал измененный класс. Наконец, в разделе часто задаваемых вопросов проекта Spring Loaded упоминается несколько случаев, когда что-то не перезагружается, поэтому для этого потребуется перезапуск сервера / приложения. Но эти исключения гораздо реже.
Еще одно замечание: это НЕ работает со встроенным сервером Pivotal tc Server или VMware vFabric tc Server, который поставляется с STS. Для этих серверов есть опция «Включить перезагрузку на основе агента Java (экспериментальная)», но для этого используется более старая версия Spring Loaded 1.2.0, которая у меня не сработала.
источник
Spring
, как насчетNon Spring
приложения.Готовы ли вы использовать Jetty в целях разработки?
Если это так, с Maven довольно просто использовать - просто запустите
mvn jetty:run
источник
Возможно, это не лучший способ, но у меня он работает.
Я использую команду rsync для синхронизации изменений из моего проекта jsp с $ contextPath.
Используйте удаленную отладку в Eclipse для Tomcat, что позволит ограниченную горячую замену кода. Если вы измените статические поля или добавите методы, вам нужно будет экспортировать банку и перезапустить контекст.
источник
мы можем использовать опцию ниже? Дважды щелкните Сервер в eclipse -> Расположение серверов -> Использовать установку tomcat. Он берет на себя управление установкой tomcat. Вам не нужно перезапускать сервер для изменений в java-классах.
источник
Я нашел самый простой способ: использование символических ссылок: я думаю, что это самый быстрый способ, потому что нет никакой синхронизации: каталог tomcat и каталог вашего проекта всегда будут в одном каталоге.
Tomcat будет периодически обнаруживать изменения и повторно развертывать ваше приложение.
Существует также способ отладки вашего приложения, поэтому я скромно считаю, что это хорошее решение.
Я задокументировал здесь свое решение для всех, кто заинтересован.
источник
Если вы торопитесь:
вуаля! :)
источник
В Eclipse щелкните «Проект» в верхнем меню и убедитесь, что выбрано «Построить автоматически». Это устранило мою проблему. Я запускал Eclipse с Tomcat, используя метаданные моей рабочей области. Я также запускал Maven в проекте динамического веб-модуля. Для проверки добавьте свое приложение в Tomcat. Запустите Tomcat из Eclipse. Убедитесь, что ваше приложение развернуто и работает. Откройте вкладку «Консоль» в Eclipse. Внесите изменения в свое приложение. Через пару секунд вы должны увидеть, как ваше изменение автоматически создается и развертывается в Tomcat.
источник
Самый простой и быстрый: настройте Eclipse на создание файла WAR при сборке; в качестве шага после сборки скопируйте этот файл WAR в каталог веб-приложений tomcat. Tomcat распознает изменение и обновит сайт без необходимости развертывания. Обратите внимание, что это не идеально; пользователи, использующие это веб-приложение, могут иметь менее оптимальные возможности, поскольку Tomcat перезапускает веб-приложение «под» ними; но это соответствует вашему запросу.
источник