В поставку 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.
Понравилось сообщение - подпишитесь на блог
Комментариев нет:
Отправить комментарий
Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!