Я пытаюсь использовать eclipse kepler для Java EE 7. Я уже установил JBoss Tools и успешно добавил JBoss Wildfly в качестве сервера. Однако мои изменения не будут автоматически развернуты. Есть ли все-таки приложение может быть развернуто автоматически так же, как при использовании стеклянной рыбы?Eclipse Kepler и JBoss Wildfly hot deployment
ответ
Использование Eclipse, дважды щелкните на вашем WildFly сервере, чтобы изменить следующие свойства:
- Публикация: выберите «Автоматически публиковать после события сборки». Мне нравится менять интервал публикации на 1 секунду.
- Применение Reload Поведение: проверить «Настройка перезагрузки приложения ...» флажок и редактировать шаблон регулярного выражения для
\.jar$|\.class$
Вот и все. Удачи!
Я предполагаю, что вы используете последнюю версию Wildfly (8.0 Beta 1 на момент написания).
В конфигурационном файле standalone.xml, искать < JSP-конфигурации/>. Добавьте атрибут development = "true" и его следует развернуть. В результате конфигурация будет выглядеть следующим образом:
<jsp-config development="true"/>
Привет @Sean Я сделал это, но когда я изменил исходный файл java, я не заметил изменений. Однако, если я изменяю xhtml, это отражается. – zulq
Добавление атрибутов (разработка, размещение, интервал модификация тест-интервал, перекомпилировать-на обанкротиться) в конфигурационном файле в XPATH = // сервлет-контейнер/jsp- конфиг/
<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)
Оба @varantes и @Sean являются по сути правильными, но эти ответы не полны.
К сожалению, единственный способ в окружении Java-сервера - полное развертывание с нулевым временем простоя - использовать платный JRebel или бесплатный инструмент spring-loaded.
Но для небольшого проекта есть несколько способов ускорить работу путем частичного горячего развертывания. По существу:
- При включенной опции Автоматически публиковать при изменении ресурса то изменений внутри
*.html
,*.xhtml
файлов сразу отражены как только вы обновите браузер. - Чтобы сделать горячую работу для развертывания
*.jsp
файлы тоже, то вы должны внутри $ {wildfly-дом} /standalone/configuration/standalone.xml сделайте следующие изменения:
<jsp-config/>
заменить:
<jsp-config development="true"/>
перезапустить сервер и наслаждаться горячим развертыванием веб-файлов.
Но при изменении *.java
исходных файлов, то только частичное горячее развертывание возможно.
Как @varantes заявил в своем ответе, что позволяет Application Reload Поведения с регулярными выражениями шаблона установлен в \.jar$|\.class$
варианте, но имеет серьезный недостаток: весь модуль перезапускается, таким образом:
- Это займет некоторое время (в зависимости насколько большой модуль).
- Состояние всего приложения потеряно.
Так что лично я препятствую этому решению.
JVM поддерживает (в режиме отладки) замену кода для тел методов. Так что пока вы модифицируете только те тела существующих методов, вы находитесь дома (нулевое время простоя, изменения отражаются сразу). Но вы должны отключить автоматическую публикацию внутри параметров сервера, иначе состояние приложения все равно будет уничтожено путем повторной публикации.
Но если вы сильно crafing Java-код (добавление классов, аннотаций, конструкторы), то к сожалению, я могу только рекомендовать набор публикации в Никогда не публиковать автоматически (или завершение работы сервера), и когда вы закончите работу в Java-файлов, то перезагрузите вручную ваш модуль (или сервер включения). Вам решать.
Он работает для небольших проектов Java, но и для более крупных, JRebel неоценима (или просто подпружиненный), потому что все описанные выше подходы не являются достаточными.
BTW: также из-за таких проблем такие решения, как Rails
/Django
/Play! Framework
, получили такую огромную популярность.
Удачи и быстрого кодирования!
Даже с Play! Рамки, если проект вырастет до приличного размера, вы снова столкнетесь с теми же проблемами. –
@ АнтонАрхипов Я не понимаю, почему. Вы имеете в виду проблемы с горячей заменой кода? Я так не думаю (хотя никогда не видел такой большой проект Play!). Или вы имеете в виду просто долгий стартап? –
В частности, замена горячего кода. Я нахожусь в команде JRebel (для записи), и мы никогда не рассматривали возможность поддержки JRebel для этих причудливых рамок. Но теперь пользователи начинают спрашивать о поддержке все больше и больше - приложения стали большими, а перезагрузка родной инфраструктуры не справляется. –
Запустите сервер в режиме отладки и будет отслеживать возможности внутри методов. Другие изменения. Он попросит перезагрузить сервер.
+1, но, к сожалению, второй вариант имеет серьезный минус: полное состояние приложения теряется. –
Одна вещь, которая заставила его работать на меня: не развертывайте в виде сжатых файлов. В свойствах eclipse Wildfly НЕ проверяйте параметр «Развертывать проекты как сжатые архивы» –