Битва против повторных развертываний достигает облаков

в 8:24, , рубрики: cloud, cloud hosting, java, jrebel, paas, platform as a service, Блог компании Jelastic, метки: , , , , ,

Автором данной статьи является наш друг и пользователь платформы Jelastic – Антон Архипов. Антон — очень талантливый разработчик, сейчас занимает должность менеджера продукта JRebel в компании ZeroTurnaround, а также является сооснователем сообщества разработчиков devclub.eu и JUG.ee.
Англоязычную версию статьи можно читать здесь.

imageВозможно, Вы еще не слышали о таком продукте как JRebel. Так вот, JRebel – это инструмент, призванный избавить от проблемы повторного развертывания приложения во время разработки, а значить сэкономить Ваше время. Он обновляет приложение сразу же после внесения каких-либо изменений в классовую структуру, файлы ресурсов и конфигурационные файлы фреймворков. Надо отметить, что этот инструмент пользуется огромной популярностью среди Java разработчиков. И не зря, ведь используя JRebel, разработчик избавляется от необходимости повторно собирать и разворачивать приложение. При этом он сохраняет в среднем 10,5 минут за час кодирования, согласно последнему отчету о JavaEE продуктивности. Это больше чем 5 недель работы каждый год – а значит более 1 месячной зарплаты каждого разработчика в команде.

Совсем недавно вышел релиз JRebel 5.0. Главная фишка этого релиза — функция JRebel Remoting, которая позволяет использовать JRebel в случаях, когда приложение запущено в облачной среде.
С такой фичей будет очень просто разрабатывать и тестировать Java приложения в облаках. Давайте рассмотрим, как установить и сконфигугировать JRebel на облачной платформе Jelastic.

Установка JRebel на Jelastic

Во-первых, необходимо создать окружение, которое Вы будете использовать, чтобы хостить Ваше приложение. Давайте возьмем в качестве сервера приложений Tomcat, который является самым широко используемым сервером согласно Developer Productivity Report 2012.

image

После создания окружения можно переходить к установке JRebel-агента. Для этого необходимо загрузить jrebel.jar. И не забудьте о лицензионном файле, который должен находиться в папке {user.home}/.jrebel.

image

Jelastic представил поддержку пользовательских свойств JVM несколько месяцев назад, и мы будем использовать эту возможность для того, чтобы настроить JRebel. Для этого нам необходимо внести некоторые изменения в файл variables.conf.

image

Кроме -javaagent параметра для того, чтобы обеспечить работy JRebel Remoting, нам понадобится JRebel remoting plugin. Подключаем его с помощью специального JVM аргумента:

-Drebel.remoting_plugin = true

Теперь мы сможем просмотреть JRebel логи, чтобы убедиться, что установка данного инструмента прошла успешно. Не забудьте сохранить все изменения и перезапустить Tomcat, чтобы применить новые параметры конфигурации.

Обратите внимание! Процедуры установки JRebel для Jetty и Tomcat практически ничем не отличаются. А вот GlassFish вместо variables.conf использует domain.xml или админ панель.

Конфигурация приложения

Для работы JRebel Remoting необходимы два конфиг файла: rebel.xml и rebel-remote.xml. JRebel требует наличия конфигурационного файла rebel.xml, чтобы загрузчики классов смогли увидеть изменения, внесенные в файлы проекта напрямую.

Rebel-remote.xml необходим для удаленной работы. Это очень простой конфигурационный файл, содержащий два параметра, ID модуля и URL, по которому доступно приложение.
Оба конфигурационных файла можно сгенерировать с помощью JRebel плагина для Eclipse, который доступне в Eclipse Marketplace.

image

JRebel Remoting в действии

Когда оба файла сгенерированы, можно собирать проект в war архив и деплоить в окружение Jelastic.

image

Давайте внесем изменения в проект, чтобы проверить, как работает JRebel.

image

Для примера изменим первую страничку (welcome.jsp). Напишем вместо “Welcome” — “Welcome to Jelastic!” и вызовем метод “Sync Now”, предоставляемый JRebel IDE плагином, чтобы обновить наше приложение.

image

После этого в консоли IDE появится следующее сообщение:

Manually triggered JRebel remoting synchronization.
Scheduling JRebel Remoting synchronization for projects: petclinic
Starting manual synchronization for project: petclinic
Parsing configuration for /Users/anton/work-src/petclinic
Directory target/classes/ will be used for uploading
Directory src/main/webapp/ will be used for uploading

JRebel-Remoting uploaded changes successfully, have fun!

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

image

В настоящее время JRebel Remoting поддерживается IDE плагином, который доступен для Eclipse, плагины для IntelliJ и NetBeans появятся в скором времени.
С JRebel 5.0 и Jelastic появилась возможность работать как локально, так и удаленно без лишних затрат времени на повторне развертывания. Попробуйте и поделитесь мнением в комментариях к этому посту. Будем очень благодарны.

Автор: jelastic

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js