Что такое 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 контейнер не будет обновлять проекты.
Внесите изменения в свой файл, и они сразу же отразятся в контейнере без перезапуска сервера.
Поставьте лайк этому сообщению и подпишитесь на мой блог, если он будет вам полезен.