понедельник, 16 января 2017 г.

Первое знакомство с Red Hat JBoss Fuse

Здравствуйте, коллеги.

Сегодня проводил семинар в Accenture Riga Delivery Center по поводу интересной для меня темы Red Hat JBoss Fuse и решил поделиться своими впечатлениями от этой сервисной шины с вами.

Что такое Red Hat JBoss Fuse? По сути это - среда исполнения для реализации набора паттернов интеграции корпоративных приложений (Enterprise Application Integration Patterns (EIP)) Apache Camel.


Данная среда исполнения поставляется в двух вариантах:

  • Apache Karaf - готовая к промышленному использованию реализация стандарта OSGi.

  • Red Hat JBoss Enterprise Application Platform - широко известный Java EE-совместимый сервер приложений с коммерческой поддержкой. К сожалению, Red Hat JBoss Fuse устанавливается только на версию 6.4.0 данного сервера приложений, реализующую лишь стандарт Java EE 6, что приводит к проблемам, некоторые из которых описаны ниже.


Для JBoss Fuse существует среда разработки JBoss Developer Studio Integration Stack, позволяющая работать не только с проектами, основанными на Apache Camel, но и с проектами jBPM, SwitchYard, а так же помогающая разрабатывать приложения для облачной платформы от Red Hat - OpenShift.


В состав среды разработки входит визуальный редактор для Camel Spring и Blueprint DSL, а так же коннекторы к серверам приложений JBoss EAP различных версий и WildFly.

Некоторые шаги по изучению разработки интеграционных решений на базе данной шины я оформил в виде набора демонстрационных проектов, выложенных на GitHub:

  • fuse-camel-course-eap-spring-archetype - архетип для системы сборки Apache Maven, содержащий шаблонный проект RESTful веб-сервиса, работающего в среде JBoss Fuse на сервере приложений JBoss EAP.

  • fuse-camel-restlet-eap - проект RESTful веб-сервиса, работающего в среде JBoss Fuse на сервере приложений JBoss EAP.

  • fuse-camel-ws-eap - проект SOAP веб-сервиса, работающего в среде JBoss Fuse на сервере приложений JBoss EAP.

  • fuse-camel-services-flow-eap - пример оркестровки нескольких REST- и SOAP-сервисов. Проект демонстрирует как работать с данными в форматах JSON и XML, осуществлять преобразование между этими форматами и обрабатывать ошибки.

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

В заключение поделюсь личными впечатлениями. Хорошее про Apache Camel и JBoss Fuse вы можете легко найти в интернете, в принципе проект интересен, как минимум тем, что основан на открытых компонентах и любой человек, знакомый с довольно популярной библиотекой Apache Camel, может его быстро освоить. Я расскажу лишь о негативных и спорных моментах. В основном замечания касаются версии на основе JBoss EAP.

  • Сервер приложений реализует устаревший стандарт Java EE 6, в то время как шина содержит компоненты, например CXF 3.1, которые зависят от частей Java EE 7, например от JAX-RS 2.0. В связи с этим периодически возникают ошибки недоступности классов. Для их исправления приходится руками вносить изменения в инсталляцию сервера приложений, например добавляя те или иные модули, что недопустимо на промышленной системе.

  • В текущей версии JBoss Fuse на EAP не поддерживается выставление веб-сервисов с использованием компонентов Camel CXF и Camel CXFRS. Возможно, некоторые другие компоненты так же не работают. Это обстоятельство приводит к тому, что выставлять сервисы нужно посредством механизмов Java EE: JAX-RS и JAX-WS, что бывает затруднительно (см. предыдущий пункт) и заставляет размазывать логику, в частности логику обработки ошибок, по двум технологическим стекам. В принципе, такая неоднозначность в поведении продукта и послужила для меня толчком к публикации демонстрационных примеров на GitHub.

  • Зачастую очень не хватает документации и примеров. Нет толковых пошаговых руководств вида как выставить веб-сервис с помощью JBoss Fuse, работающей на EAP. Приходится тратить очень много времени на то, чтобы по крупицам найти нужные материалы, собрать сервис, а потом внезапно выяснить, что такие-то компоненты Apache Camel не поддерживаются на данной платформе. Особенно низкое качество документации бросается в глаза, если сравнить с документацией по самому Apache Camel.

  • Непонятны дальнейшие шаги по развитию платформы. Я слежу за репозиторием jboss-fuse/fuse на GitHub, одно время там планировалась разработка версии JBoss Fuse 7, но в дальнейшем от идеи отказались (в ветке master есть даже коммит: Switch version to 6.x. Fuse 7 will be hosted elsewhere).

Думаю, что для первоначального знакомства с данной реализацией сервисной шины предприятия с открытыми исходниками материала достаточно. Если у кого-либо из читателей есть опыт использования Red Hat JBoss Fuse, то буду признателен, если поделитесь им в комментариях. Так же с удовольствием отвечу на ваши вопросы.

Оставайтесь на связи!

Понравилось сообщение - подпишитесь на блог

2 комментария:

Unknown комментирует...

Red Hat FUSE интересная тема, поэтому жду продолжения :-)

Unknown комментирует...

А если не секрет, чем заинтересовало? Мне лично не понравилось, поэтому и родилась такая брюзгливая статья.

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!