четверг, 9 июня 2011 г.

Используем технологические адаптеры в Oracle Service Bus


В поставку Oracle Service Bus (OSB) и Oracle SOA Suite входит довольно широкий набор так называемых технологических адаптеров: к СУБД, к файлам, к http-серверам, к веб-серисам, к JMS-, AQ- и MQ-очередям и т.д. С помощью данных адаптеров можно использовать, например, СУБД, как веб-сервис, при этом будет обеспечена поддержка транзакций и прочих аспектов взаимодействия.

В данной заметке я хочу показать, что использовать технологические адаптеры в OSB не сложнее чем в Oracle SOA Suite. В качестве примера рассмотрим файловый адаптер.

Генерация WSDL- и JCA-описаний адаптера


Прежде чем использовать технологический адаптер в составе OSB, необходимо получить его WSDL- и JCA-описания в соответствующих файлах. Данные описания будут использоваться для генерации Business Service, который будет являться связующим звеном между адаптером и OSB. Если используемая терминология вам не понятна, то рекомендую обратиться к заметке Создаем Hello World на Oracle Service Bus с использованием Enterprise Pack for Eclipse.

Для генерации описаний необходимо возпользоваться IDE JDeveloper, в которой создать новый SOA-проект.



Назовем проект file-writer и укажем его тип - SOA.



Нам необходим лишь адаптер, полноценный композит мы создавать не будем - оставим его пустым.



Теперь необходимо описать схему данных, с которыми будет работать создаваемый нами адаптер. Для этого создадим новый XSD-файл



Укажем название файла, Target Namespace и префикс.



Заполним сгенерированный шаблон. Мы опишем простое сообщение с корневым тегом message, состоящее из двух частей: header и body. Сам тег message содержит атрибут country - строку, ограниченную длиной в три символа.



Вернемся на вкладку редактирования композита. Необходимо перетащить в поле композита файловый адаптер с палитры компонентов. После перетаскивания автоматически запустится мастер настройки адаптера.



Укажем название адаптера - OutFileAdapter.



Появится окно выбора операции. Файловый адаптер поддерживает как различные варианты чтения файла, так и запись в него. Выберем операцию Write - запись информации в файл.



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



В окне Messages необходимо указать XSD-схему сообщения, записываемого в файл.



Если нажать на кнопку с лупой, то появится диалог выбора файла с XSD-схемой.



Выберем элемент message из созданной ранее схемы message.xsd.



На последнем шаге мастера настройки файлового адаптера нас предупредят, что после нажатия кнопки Finish будет создан WSDL-файл с описанием данного адаптера. Впрочем, ради этого все и затевалось.



Созданный файловый адаптер отобразится в окне редактирования композита.



Во вкладке Project Explorer будет показано содержимое каталога с исходниками проекта. Видно, что созданы два новых файла: OutFileAdapter.wsdl и OutFileAdapter_file.jca.



Создание OSB-проекта


Файлы с описаниями файлового адаптера сгенерированы. Теперь необходимо на основе данных файлов создать OSB-проект, содержащий Business Service и Proxy Service. В результате получится веб-сервис, который на каждый запрос генерирует файл, содержащий информацию из данного запроса.

Для создания и разворачивания проекта воспользуемся IDE Oracle Enterprise Pack for Eclipse (OEPE).

Чтобы создать новый OSB-проект, необходимо вызвать пункт New -> Oracle Service Bus Project контекстного меню вида Project Explorer.



В диалоговом окне создания проекта укажем его имя - AdaptersDemo.



Будет сгенерирован новый проект. В данном проекте необходимо создать три каталога:
- Business Service
- Import
- Proxy Service



Теперь в каталог Import нужно импортировать JCA-описание файлового адаптера OutFileAdapter. Вместе с JCA-описанием будет импортировано WSDL-описание и связанные с ним файлы XSD.

Для импорта описаний служит пункт Import -> Oracle Service Bus - Resources from URL контекстного меню вида Project Explorer.



В диалоговом окне импорта необходимо указать каталог, в который будет осуществлен импорт - Import, выбрать JCA-файл и указать тип ресурса - JCA.



На втором шаге мастера будет отображено дерево импортированных ресурсов. Видно, что помимо JCA-файла импортируется связанное с ним WSDL-описание и XSD-файл.



Импортированные файлы отобразятся в дереве проекта.



Теперь на основе импортированного JCA-файла можно сгенерировать Business Service. Тип транспорта, используемый данным сервисом, будет, соответственно, JCA. Создать вручную бизнес-сервис с типом транспорта JCA в OEPE невозможно.

Для генерации сервиса необходимо вызвать пункт Oracle Service Bus -> Generate Service контекстного меню JCA-файла.



В диалоговом окне JCA Business Service необходимо указать каталог, в котором будет сгенерирован сервис, а так же название сервиса и название WSDL-файла с описанием данного сервиса.



После нажатия кнопки OK в Project Explorer'е отобразятся сгенерированные файлы FileWriteBusinessService.biz и его WSDL-описание: FileWriteBusinessService.wsdl.



Пройдемся по основным вкладкам многостраничного редактора Business Service для сгенерированного файла.

Вкладка General. Видно, что сгенерированный сервис основан на сгенерированном же WSDL-описании.



Вкладка Transport. В качестве протокола транспорта используется jca. Строчка jca://eis/FileAdapter взята из импортированного JCA-файла.



Вкладка JCA Transport содержит информацию из импортированного JCA-файла, а так же некоторые дополнительные параметры.



Теперь на базе созданного Business Service можно сгенерировать Proxy Service. Для генерации Proxy Service нужно вызвать пункт Oracle Service Bus -> Generate Proxy Service контекстного меню Business Service.



В диалоговом окне генерации Proxy Service необходимо выбрать каталог, в который будет осуществлена генерация - ProxyService, - и указать наименование файла - FileWriteProxyService.



Если открыть сгенерированный файл, то в специализированном многостраничном редакторе отобразится информация об ошибке. Дело в том, что сгенерированный Proxy Service пытается использовать JCA-транспорт, но значения обязательных параметров его настройки пустые.



Перейдем на вкладку Transport редактора и выберем в качестве значения поля Protocol - http. Использование HTTP-транспорта позволит нам осуществлять запись в файл посредством вызова веб-сервиса.



Проверим, что на вкладке Message Flow содержится корректно сгенерированная маршрутизация - все запросы к Proxy Service будут ретранслироваться на созданный ранее Business Service.



Проект для OSB создан. Теперь данный проект необходимо развернуть на сервере приложений. Предположим, что соединение с WebLogic-сервером, на котором размещена OSB, уже настроено в Eclipse.



Для размещения проекта на сервере его необходимо сначала добавить в соединение. Для этого служит пункт Add and Remove контекстного меню сервера.



В появившемся диалоговом окне необходимо переместить конфигурационный проект OSB Localhost в правую часть, воспользовавшись соответствующими стрелочками.



После нажатия кнопки Finish проект будет добавлен в соединение с сервером.



Разворачивание проекта на сервер осуществляется по нажатию кнопки Publish to the server, расположенной в верхней правой части вида Servers.



Сам процесс разворачивания может занять некоторое время.



После успешного выполнения операции размещения проекта на сервере у соответствующих элементов на виде Servers появится метка Synchronized.



Тестирование созданного проекта


Для тестирования созданного проекта необходимо перейти в консоль управления сервисной шиной OSB. Данная консоль расположена по адресу http://server:port/sbconsole.

Наш проект AdaptersDemo должен отображаться на вкладке Project Explorer.



Теперь необходимо перейти в каталог ProxyService. В таблице Resources данного каталога должен отображаться сервис FileWriteProxyService.



После нажатия на кнопку с изображением зеленого жука, взятого из Eclipse, откроется окно тестирования сервиса. Во вкладке Request Document необходимо задать тестовые значения, после чего нажать кнопку Execute.



Появятся знаменитые часы Oracle, уведомляющие о времени обработки запроса.



Если выполнение запроса завершится успешно, то появится окно Proxy Service Testing, в котором однако поле Response Document будет пустым - запись в файл является однонаправленной операцией, т.е. операцией, не возвращающей ответа.



Теперь необходимо проверить, действительно ли создан файл, содержимое которого равно содержимому запроса. Для этого необходимо перейти в каталог, указанный в настройках файлового адаптера. Видно, что в данном каталоге появился файл data.txt.



Содержимое которого совпадает с содержимым элемента message тестового запроса.



Еще один момент. При создании Proxy Service мы указывали в качестве протокола транспорта - http. Так же на этой странице указывался Endpoint URI сервиса.



Это значит, что по указанному Endpoint URI будет создан веб-сервис, доступный по протоколу HTTP. Данный веб-сервис можно вызывать из различных клиентов, написанных, например, на Java. Данные клиенты тем самым будут клиентами к OSB. WSDL-описание данного сервиса доступно по URL, указанному в качестве значения параметра Endpoint URI с добавлением URL сервера OSB в начале и ?wsdl в конце. Выглядит описание следующим образом:



Выводы


Начиная с версии 11g, в Oracle Service Bus и Oracle SOA Suite используется единая модель технологических адаптеров, основанная на технологии под названием Java Connector Architecture (иногда сокращается как J2CA, чтобы не путать с Java Cryptography Architecture). Каждый такой адаптер представляет собой Java EE-приложение, разворачиваемое на сервере приложений WebLogic и доступное из SOA Suite или OSB с помощью специального API. Технологические адаптеры позволяют использовать в разрабатываемой вами SOA-архитектуре предприятия такие "сервисы", которые изначально сервисами не являются: файлы, базы данных, JMS-, MQ-, AQ-очереди и т.д.

Помимо технологических адаптеров Oracle предлагает так же набор т.н. Application Adapter'ов - адаптеров для таких приложений, как SAP, Siebel, PeopleSoft, JD Edwards и Oracle e-Business Suite. Наличие таких адаптеров существенно облегчает интеграцию с данными системами. В частности, недавно Суровый обеспечивал интеграцию с SAP на основе отправки и получения IDOC'ов.

UPD: 06.07.11 Вот тут товарищи подсказывают, что JCA-адаптеры поддерживаются в OSB, начиная с версии 10.3.1.

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

Комментариев нет:

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

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