Автором данной статьи является наш друг и пользователь платформы Jelastic – Антон Архипов. Антон — очень талантливый разработчик, сейчас занимает должность менеджера продукта JRebel в компании ZeroTurnaround, а также является сооснователем сообщества разработчиков devclub.eu и JUG.ee.
Англоязычную версию статьи можно читать здесь.
Возможно, Вы еще не слышали о таком продукте как 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.
После создания окружения можно переходить к установке JRebel-агента. Для этого необходимо загрузить jrebel.jar. И не забудьте о лицензионном файле, который должен находиться в папке {user.home}/.jrebel.
Jelastic представил поддержку пользовательских свойств JVM несколько месяцев назад, и мы будем использовать эту возможность для того, чтобы настроить JRebel. Для этого нам необходимо внести некоторые изменения в файл variables.conf.
Кроме -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.
JRebel Remoting в действии
Когда оба файла сгенерированы, можно собирать проект в war архив и деплоить в окружение Jelastic.
Давайте внесем изменения в проект, чтобы проверить, как работает JRebel.
Для примера изменим первую страничку (welcome.jsp). Напишем вместо “Welcome” — “Welcome to Jelastic!” и вызовем метод “Sync Now”, предоставляемый JRebel IDE плагином, чтобы обновить наше приложение.
После этого в консоли 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!
Как правило, чтобы загрузить изменения на сервер, нужно около секунды, но это, конечно же, зависит от подключения. После завершешия синхронизации, обновляем страницу – и вуаля!
В настоящее время JRebel Remoting поддерживается IDE плагином, который доступен для Eclipse, плагины для IntelliJ и NetBeans появятся в скором времени.
С JRebel 5.0 и Jelastic появилась возможность работать как локально, так и удаленно без лишних затрат времени на повторне развертывания. Попробуйте и поделитесь мнением в комментариях к этому посту. Будем очень благодарны.
Автор: jelastic