Eclipse Kepler и горячее развертывание JBoss Wildfly
Я пытаюсь использовать eclipse kepler для Java EE 7. Я уже установил JBoss Tools и успешно добавил JBoss Wildfly в качестве сервера. Однако мои изменения не будут автоматически развернуты. В любом случае приложение может быть развернуто автоматически так же, как при использовании стеклянной рыбы?
Ответы
Ответ 1
Используя Eclipse, дважды щелкните на своем сервере WildFly, чтобы изменить следующие свойства:
- Публикация: выберите "Автоматически публиковать после события сборки". Мне нравится менять интервал публикации на 1 секунду.
- Поведение обновления приложения: установите флажок "Настроить перезагрузку приложения..." и отредактируйте шаблон регулярного выражения на
\.jar$|\.class$
Что это. Удачи!
Ответ 2
Оба @varantes и @Sean по существу правильны, но эти ответы не заполнены.
К сожалению, единственный способ в среде java-сервера иметь полное развертывание с нулевым временем простоя - использовать платный JRebel или бесплатный spring-loaded.
Но для небольшого проекта есть несколько способов ускорить работу путем частичного горячего развертывания. По существу:
- При включенной опции Автоматически публиковать при изменении ресурса
то изменения внутри файлов
*.html
, *.xhtml
немедленно
как только вы обновите браузер.
- Чтобы сделать работу с горячим развертыванием для файлов
*.jsp
тоже, вы должны
внутри ${wildfly-home}/standalone/configuration/standalone.xml
внесите следующие изменения:
<jsp-config/>
заменить на:
<jsp-config development="true"/>
перезапустите сервер и получите горячее развертывание веб файлов.
Но при изменении *.java
исходных файлов возможно только частичное горячее развертывание.
Как сказал @varantes в своем ответе, включение поведения перезагрузки приложения с шаблоном регулярного выражения, установленным на \.jar$|\.class$
, является опцией, но имеет серьезный недостаток: весь модуль перезапускается, таким образом:
- Требуется некоторое время (в зависимости от того, насколько большой модуль).
- Состояние всего приложения потеряно.
Так что лично я препятствую этому решению.
JVM поддерживает (в режиме отладки) перекодировку кода для тел методов. Так что пока вы модифицируете только те тела существующих методов, вы находитесь дома (нулевое время простоя, изменения отражаются сразу). Но вы должны отключить автоматическую публикацию внутри параметров сервера, иначе состояние приложения все равно будет уничтожено путем повторной публикации.
Но если вы сильно поддаетесь java-коду (добавляете классы, аннотации, конструкторы), то, к сожалению, я могу только рекомендовать устанавливать публикацию в Никогда публиковать автоматически (или выключение сервера) и когда вы закончите свою работу в java файлы, а затем перезапустите вручную ваш модуль (или сервер включения). До вас.
Он работает для небольших проектов java, но для более крупных JRebel неоценим (или просто spring -loaded), потому что все описанные выше подходы недостаточны.
Кстати: также из-за таких проблем такие решения, как Rails
/Django
/Play! Framework
, получили такую огромную популярность.
Удачи и быстрого кодирования!
Ответ 3
Я предполагаю, что вы используете последнюю версию Wildfly (8.0 Beta 1 на момент написания).
В файле конфигурации standalone.xml найдите < jsp-config/ > . Добавьте атрибут development = "true" , и он должен быть горячим. Полученная конфигурация будет выглядеть так:
<jsp-config development="true"/>
Ответ 4
Добавить атрибуты (разработка, проверка-интервал, модификация-тест-интервал, перекомпилировать-на-провал) в файле конфигурации в xPath =//servlet-container/jsp-config/
<servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
<jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
</servlet-container>
(Он работает в WildFly-8.0.0.Final)
Ответ 5
Запустите сервер в режиме отладки и будет отслеживать возможности внутри методов. Другие изменения Он попросит перезагрузить сервер.