- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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 [10].

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 [7] и Jelastic [11] появилась возможность работать как локально, так и удаленно без лишних затрат времени на повторне развертывания. Попробуйте и поделитесь мнением в комментариях к этому посту. Будем очень благодарны.

Автор: jelastic


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/9951

Ссылки в тексте:

[1] Jelastic : http://jelastic.com

[2] JRebel: http://zeroturnaround.com/software/jrebel/

[3] ZeroTurnaround: http://zeroturnaround.com/

[4] devclub.eu: http://www.devclub.eu/

[5] JUG.ee: http://www.jug.ee/

[6] здесь: http://zeroturnaround.com/blog/jrebel-and-jelastic-the-silver-lining-for-your-java-cloud/

[7] JRebel 5.0: http://zeroturnaround.com/blog/jrebel-5-0/

[8] JRebel Remoting: http://zeroturnaround.com/software/jrebel/remoting/

[9] Developer Productivity Report 2012: http://pages.zeroturnaround.com/ProductivityReport2012_java-productivity-report-1.html

[10] Eclipse Marketplace: http://marketplace.eclipse.org/content/jrebel-eclipse

[11] Jelastic: http://jelastic.com/java-paas