Что такое JRebel?

JRebel — это подключаемый модуль JVM, который позволяет разработчикам Java мгновенно обновлять код (т. е. добавлять новые функции, исправлять ошибки и т. д.) и видеть, как эти изменения отражаются в их разрабатываемых приложениях, без перезапуска сервера приложений.

Как это работает?

JRebel работает, отслеживая каталог, содержащий файлы классов, созданные как часть сборки. Он использует «технологию Rebellion» для мгновенной перезагрузки изменений, внесенных в структуру класса, что делает ненужным полное повторное развертывание приложения. Вы просто сохраняете, обновляете и сразу видите изменения.

Запуск сервера с помощью JRebel увеличивает время запуска примерно на одну минуту, но эти затраты с лихвой компенсируются тем фактом, что разработчикам больше не нужно перезапускать свои серверы после внесения изменений.

Я не буду рассказывать, как настроить Jrebel для Hybris, так как это уже описано в официальной документации:

https://manuals.jrebel.com/jrebel/advanced/hybris.html

Я просто объясню, в чем разница при настройке JRebel с Docker:

Шаги:

Вы можете добавить JRebel в свой Dockerfile:

RUN wget -O jrebel.zip http://dl.zeroturnaround.com/jrebel-stable-nosetup.zip && \
               unzip jrebel.zip && \
               mv jrebel /opt/jrebel && \
               
rm jrebel.
zip

В локальном изменении свойств в зависимости от отладки: local.properties(-agentpath зависит от того, откуда вы скачали свой Jrebel):

tomcat.debugjavaoptions=-Xverify:none -agentpath:/opt/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Drebel.remoting_port=12345 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n
#tomcat.javaoptions=-agentpath:/opt/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true

Или вы можете загрузить Jrebel вручную, а затем в local.properties добавить путь:

tomcat.debugjavaoptions=-Xverify:none -agentpath:/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Drebel.remoting_port=12345 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n

#tomcat.javaoptions=-agentpath:/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true

Установите подключаемый модуль JRebel:

После того, как вы настроили JRebel в Docker и контейнер запустился, вы должны увидеть следующий баннер во время Hybris:

Добавить удаленный сервер в IntelliJ IDEA

Откройте Настройки › JRebel › Удаленные серверы.

Нажмите +, чтобы настроить новый удаленный сервер.

Проверьте соединение, указав URL-адрес сервера Hybris:

Настроить модули для поддержки удаленного сервера (создать все удаленные XML-файлы для модулей).

Обязательно снова создайте образ Docker, чтобы скопировать все пользовательские файлы в контейнер. Без удаленного XML контейнер не будет обновлять проекты.

Внесите изменения в свой файл, и они сразу же отразятся в контейнере без перезапуска сервера.

Поставьте лайк этому сообщению и подпишитесь на мой блог, если он будет вам полезен.