Горячее развертывание на JBoss – как мне заставить JBoss «видеть» изменение?

Я разрабатываю приложение Java EE, которое я развертываю снова и снова на локальной установке JBoss во время разработки. Я хочу ускорить создание путем горячей развертывания моего приложения прямо в [JBOSS] / server / default / deploy / myApp

Кажется, что это работает – но, похоже, также существует несколько произвольная задержка между жестким развертыванием и когда JBoss начинает использовать новые classы. Я не очень хорошо знаком с JBoss, но я предполагаю, что он кэширует classы, и именно это и вызывает проблему.

Правильно ли, и если да, то как я могу сделать JBoss для очистки кеша?

У меня была такая же проблема в моем комплекте: (адаптер Eclipse IDE + JBoss) + JBoss AS 7.0.1 (проект сообщества).

Мое решение очень просто – вы должны пойти в административную панель JBoss (по умолчанию localhost: 9990), там в настройках профиля открываются Core – Deployment Scanners. Включите Autodeploy-Exploded (установите значение true), и по вашим пожеланиям вы можете установить время сканирования (по умолчанию 5000 мс) для соответствия (я установил 2000, для более быстрой инкрементной публикации в Eclipse, когда я вношу изменения в проекты) , Вот и все. Теперь JBoss запускает HOT не только для файлов HTML (JSF, XHTML и т. Д.), Но также заботится о POJO-classах (бобы и т. Д.).

К сожалению, это не так просто. Есть более сложные вещи за кулисами в JBoss (большинство из них относится к ClassLoader), что помешает вам ГОРЯЧЕЙ ДЕПЛОГИРОВАТЬ ваше приложение.

Например, вы не сможете использовать HOT-DEPLOY, если некоторые из ваших подписей classов меняются.

До сих пор использование MyEclipse IDE (платный дистрибутив Eclipse) – единственное, что я обнаружил, что он работает довольно успешно. Однако точность не 100%. Но, безусловно, лучше, чем JBoss Tools, Netbeans или любое другое решение на основе Eclipse.

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

Вы должны попробовать JRebel , который очень хорошо работает с горячим развертыванием. Немного дороже, но стоит денег. У них есть пробная версия.

Горячее развертывание стабильно только для изменений в статических частях приложения (jsf, xhtml и т. Д.).

Вот рабочее решение, согласно JBoss AS 7.1.1.Final :

  • Создайте свой проект.
  • Перейдите к [JBOSS_HOME] / standalone / tmp / vfs.
  • Откройте последнюю измененную папку с именем «deployment [some_alphanumeric_values]», то есть «deployment344b1c870c8edbd».
  • Перейдите к определенному виду, которое вы хотите отредактировать (обычно это входит в упакованную .war папку) и откройте его текстовым редактором (например, Notepad ++).
  • Внесите необходимые изменения и сохраните файл.
  • Обновите соответствующую страницу в своем браузере. Изменения должны быть видны сейчас.
  • Когда закончите, не забудьте скопировать эти изменения в вашу реальную среду разработки, перестроить и переустановить.

    У меня была такая же проблема, но думаю, что теперь я ее контролирую.

    Используете ли вы eclipse или командную строку или?

    Когда я использую командную строку, я думаю, что я сделал «очистить шов» или «удалить шов» или, возможно, даже «перезапустить шов», а затем «взорвать шов». Я, вероятно, пробовал все это в тот или иной момент, никогда не утруждая себя поиском того, что каждый делает.

    Идея состоит в том, чтобы удалить развернутый файл войны из двух мест

     1. $JBOSS_HOME/server/default/deploy 2. $PROJECT_HOME/exploded_archives 

    Я уверен, что «шов undeploy» удаляет 1-й и «чистый шов» удаляет 2-й.

    Когда я использую eclipse (я использую бесплатный), я сначала выключаю «Project / Build Automatically». Тогда, когда я готов к развертыванию, я выполняю проект Project / Build Project или Project / Build All в зависимости от того, что я изменил. Когда я изменяю xhtml, Build Project достаточно. Когда я меняю источник Java Build, все работает. Возможно, они делают то же самое, и разница в моем воображении, но какая-то комбинация этого материала будет работать для вас.

    Вы должны следить за выходом. Иногда приложение не очищается или не развертывается. Это приведет к тому, что вы не увидите изменений. Иногда я сначала закрываю сервер, а затем перестраиваю / очищаю / развертываю проект.

    Надеюсь это поможет.

    TDR

    Найдено решение по этой ссылке :

    Что делать:

    1. настроить взорванный артефакт войны на расширение .war
    2. развернуть взорванный артефакт в WildFly или Jboss
    3. настроить IntelliJ на обновление ресурсов при обновлении

    Когда я изменяю страницу (сеть), я обновляю и когда обновляю веб-браузер: все это с моим мод. Я настроил Jboss для автосканирования (не уверен, что это помогло)

    Только мои два цента:

    • Холодное развертывание – это способ развертывания приложения, когда вы его останавливаете (или останавливаете весь сервер), затем устанавливаете новую версию и, наконец, перезапускаете приложение (или запускаете весь сервер). Он подходит для официальных производственных развертываний, но было бы ужасно медленно делать это во время разработки. Забудьте о быстром развитии, если вы это делаете.

    • Автоматическое развертывание – это возможность повторного сканирования сервера для новой EAR / WAR и автоматического развертывания за кулисами для вас или для среды IDE (Eclipse) для автоматического развертывания всего приложения при внесении изменений в исходный код , JBoss делает это, но отдел маркетинга JBoss назвал это ошибочно « горячее развертывание ». Автоматическое развертывание не так медленное, как холодное развертывание, но оно действительно медленное по сравнению с быстрым развертыванием.

    • Горячее развертывание – это возможность развертывания за кулисами «по мере ввода ». Не нужно передислоцировать все приложение при внесении изменений. В ТОЛЬКО ТОЛЬКО ПОЛЬЗОВАТЕЛЯ развертывает изменения. Вы меняете исходный код Java и вуаля! он работает уже. Вы никогда не замечали, что это его развертывает. JBoss не может этого сделать, если вы не купите JRebel (или подобное), но это слишком много для меня (я дешев).

    Теперь моя «коммерческая подача»: D

    Как насчет использования Tomcat во время разработки? Поставляется с горячим развертыванием в течение всего дня … бесплатно. Я делаю это все время во время разработки, а затем развертываю на WebSphere, JBoss или Weblogic. Не поймите меня неправильно, эти три отличные для производства, но действительно AWFUL для быстрой разработки на вашей локальной машине. Производительность развития снижается, если вы используете эти три в течение всего дня.

    По моему опыту, я прекратил использование WebSphere, JBoss и Weblogic для быстрого развития. Тем не менее, я все же их установил в своей локальной среде, но только для случайного теста, который мне может понадобиться. Я не плачу за JRebel, пока я получаю потрясающую скорость разработки. Я упоминал, что Tomcat полностью совместим с JBoss?

    Tomcat является бесплатным и не только имеет автоматическое развертывание, но и REAL hot deployment (Java-код, JSP, JSF, XHTML) при вводе Eclipse ( да, вы хорошо читаете ). В MYKong есть страница ( https://www.mkyong.com/eclipse/how-to-configure-hot-deploy-in-eclipse/ ) с подробными сведениями о том, как ее настроить.

    Вам понравилась моя коммерческая подача?

    Ура!

    На самом деле моя проблема заключалась в том, что утилита командной строки mvn не увидит изменений по какой-либо причине. Я включил автоматическое развертывание в сканере развертывания, и все еще не было никакой разницы. ОДНАКО … Я крутился вокруг среды Eclipse, и поскольку я добавил сервер JBoss для своего windows Servers, я обнаружил, что у меня была возможность добавлять или удалять … в моем рабочем пространстве. Когда проект был добавлен всякий раз, когда я делал изменения для кода, изменение кода было обнаружено с помощью сканера развертывания, а JBoss прошел цикл обновления кода !!! Работает как шарм.

    Вот шаги, необходимые для его установки;

    Сначала, если вы этого еще не сделали, добавьте свой JBoss-сервер в свой Eclipse, используя File-> New-> Other-> Server, затем перейдите к движению добавления вашего сервера JBoss AS 7. Обязательно найдите каталог, который вы используете.

    После добавления посмотрите вниз в нижней части Eclipse на вкладку «Серверы». Вы должны увидеть свой сервер JBoss. Выделите его и найдите «Добавить или удалить …». Оттуда вы должны увидеть свой проект.

    После добавления сделайте небольшое изменение в своем коде и посмотрите, как JBoss отправится в город, чтобы вы могли развернуть его.

    Я разрабатывал проект с Eclipse и Wildfly, и взорванный EAR-файл становился все большим благодаря развертыванию всех сторонних библиотек, которые мне нужны в приложении. Я указывал на развертывание в моем репозитории Maven, который, я думаю, каждый раз возвращал банки. Поэтому перераспределение приложения, когда я менял код Java на уровне сервиса, превращалось в кошмар.

    Затем, обратившись к агенту Hotswap, это помогло многим увидеть изменения в EJB-коде без повторного развертывания приложения.

    Однако недавно я обновился до Wildfly 10, Java 8 и JBoss Developer Studio 10, и во время этого процесса я потратил время, чтобы переместить все мои сторонние приложения, например, примитивы в модули Wildfly, и я удалил ретрансляцию Maven из моей конфигурации развертывания. Теперь перераспределение всего приложения, которое является довольно большим через Eclipse, занимает всего несколько секунд, и это намного быстрее, чем раньше. Я даже не чувствую необходимости устанавливать Hotswap и не хочу рисковать им в любом случае прямо сейчас.

    Поэтому, если вы строите под Eclipse с Wildfly, тогда держите приложение в стороне от сторонних библиотек, используя модули Wildfly, и вам будет намного лучше.

    Решение для Netbeans 8.02 и 8.1 IDE и JBOSS EAP 6.4:

    1. На вкладке служб Netbeans добавьте сервер JBOSS на свой серверный узел.
    2. Если вы используете MAVEN, netbeans компилирует файлы и файлы копий maven в каталог ./target. Вам нужно создать символическую ссылку из. \ Target в JBOSS_HOME \ standalone \ deployments. Под windowsми команда примера будет

      cd %JBOSS_HOME%\standalone\deployments mklink /d MyWebApplication.war %PROJECTS_HOME%\MyWebApplication\target\MyWebApplication-1.0.0

      Вышеупомянутое создает символическую ссылку из %JBOSS_HOME%\standalone\deployments\MyWebApplication.war в \target\MyWebApplication-1.0.0 где maven передает все файлы после компиляции или после изменения jsp, html или любого другого файла.

    3. Последнее, что нужно сделать, это создать файл CentralManagement.war.dodeploy в% JBOSS_HOME% \ standalone \ deployments. Этот файл будет сообщать JBOSS о развертывании военного «файла» в качестве веб-приложения

    Запустите сервер в режиме отладки и он будет отслеживать изменения внутри методов. Другие изменения Он попросит перезапустить модуль.

    Я использую JBoss AS 7.1.1.Final . Добавление следующего fragmentа кода в мой web.xml помогло мне изменить файлы jsp на лету:

      jsp org.apache.jasper.servlet.JspServlet  development true  3  

    Надеюсь это поможет.!!

    Разверните приложение как взорванное (папка project.war), добавьте в свой web.xml:

       org.jboss.weld.development true  

    Обновляйте время web.xml при каждом развертывании (добавьте пустую строку):

     set PRJ_HOME=C:\Temp2\MyProject\src\main\webapp set PRJ_CLSS_HOME=%PRJ_HOME%\WEB-INF\classes\com\myProject set JBOSS_HOME= C:\Java\jboss-4.2.3.GA-jdk6\server\default\deploy\MyProject.war set JBOSS_CLSS_HOME= %JBOSS_HOME%\WEB-INF\classes\com\myProject copy %PRJ_CLSS_HOME%\frontend\actions\profile\ProfileAction.class %JBOSS_CLSS_HOME%\frontend\actions\profile\ProfileAction.class copy %PRJ_CLSS_HOME%\frontend\actions\profile\AjaxAction.class %JBOSS_CLSS_HOME%\frontend\actions\profile\AjaxAction.class ECHO.>>%JBOSS_HOME%\WEB-INF\web.xml 

    Это сработало для меня на Eclipse Mars с WildFly 11. Дважды щелкните на сервере WildFly под серверами, чтобы открыть страницу конфигурации. На вкладке «Обзор» -> «Публикация» выберите «Автоматически публиковать при изменении ресурсов» и установите интервал в 1. Далее, вкладка «Обзор» -> «Обновление приложения», снимите флажок «Использовать шаблон по умолчанию» и установите шаблон в \.jar$|\.class$ . На вкладке «Развертывание» снимите флажок «Развернуть проект как сжатые архивы». Надеюсь это поможет.

    Используйте скрипт Ant и настройте целевое развертывание.

    objective развертывания должна:

    1. Остановить JBoss
    2. Скопируйте ухо или войну в каталог развертывания
    3. Начать JBoss

    ==> Отсутствие кэширования + также отсутствие проблем с памятью после последующих развертываний во время тестирования.

  • XamlParseException после развертывания проекта WPF
  • Android Studio не развертывает изменения в приложении
  • Как вручную установить веб-сервис на Tomcat 6?
  • Запуск приложения на основе .net без .NET Framework
  • Сделать MSDeploy (Visual Studio) не удалять папку App_Data, но удалять все остальное
  • Определение версии сборки во время события после сборки
  • Приложение .NET не может запускать и получать XamlParseException
  • Ошибка развертывания: запуск Tomcat не удался, порт 8080 сервера уже используется
  • Ошибка развертывания Heroku H10 (приложение разбилось)
  • Как я могу развернуть приложение .NET, использующее ODAC, без установки всего компонента пользователю?
  • Лучший способ развертывания приложения Visual Studio, которое может работать без установки
  • Interesting Posts

    Функция SQL group_concat в SQL Server

    Как взять клип большего видеофайла?

    Каковы основные понятия прозрачности, которые должен знать каждый разработчик?

    Приоритет параметров маршрутизации MVC

    Как вы конкретно заказываете ось ggplot2 x вместо алфавитного порядка?

    Максимизированный хром показывает небольшую линию на втором экране

    Существуют ли сочетания клавиш для ответа на запросы на собрания в MS Office Outlook 2010?

    Что такое ошибка «необъявленного идентификатора» и как его исправить?

    Требуется ли установка большей ОЗУ, потребляющей больше энергии?

    Wuauclt.exe / detectnow / updatenow не устанавливает все обновления

    Центр обновления Windows уничтожает мое интернет-соединение

    Как сделать резервную копию всех ваших писем, скопировав папку «Outlook»? (Outlook 2013)

    Как подождать несколько фьючерсов

    Как сопоставить несколько результатов с помощью std :: regex

    Firebase runTransaction не работает – MutableData имеет значение null

    Давайте будем гением компьютера.