На закладке Web-сервисы для новичков вы узнали, что такое Web-сервисы и получили описание того, что же такое компонентные технологии Web-сервисов. На этой закладке вы узнаете, как DB2 вписывается в общую картину Web-сервисов
Web-сервисы DB2 - это Web-сервисы, которые предоставляются DB2. Эти сервисы включают SQL операции такие как вставка, обновление, удаление и вызов хранимых процедур в базе данных DB2 UDB. С другой стороны DB2 может себя вести как потребитель Web-сервисов. Давайте для примера рассмотрим Рисунок 1 ниже.
Рисунок 1. DB2 и среда Web-сервисов
Предположим, что ваша компания в Канаде производит автомобили. Чтобы успешно конкурировать, вы разработали приложение, которое запрашивает у производителей в Северной Америке цены на различные комплектующие и выбирает тех, которые в настоящий момент времени продают комплектующие по самым низким ценам. Как ваше приложение опрашивает производителей? Как производители передают список поставляемых комплектующих с ценами?
В этом примере производители ведут себя как поставщики Web-сервисов. Предположим, что они хранят списки комплектующих с ценами (в локальной валюте) в базе данных DB2 UDB и предоставлют к ним доступ средствами DB2, что и делает их поставщиками Web-сервисов. Это показано на левой части Рисунка 1.
Правая часть рисунка показывает ваше приложение, которое вначале конвертирует цену в канадские доллары, используя функцию getRate (которая предоставляется другим поставщиком Web-сервисов) непосредственно в теле SQL-запроса. Таким образом ваше приложение является потребителем Web-сервисов.
Еще одна технология потребителей Web-сервисов, называемая Web Services wrapper, поставляется в составе WebSphere Information Integrator. Тогда как функции, определяемых пользователем (UDF), создают Web-сервис по приницпу доступа к операторам SQL, Web Services wrapper создает Web-сервис посредоством доступа к виртуальным таблицам (NICKNAMEs). Для более полной информации об этой технологии, обратитесь к источникам, указанным в последнем разделе.
DB2 как поставщик Web-сервисов требует установки Web services Object Runtime Framework (WORF), также известного как Document Access Definition Extension (DADx). WORF представляет собой zip-файл dxxworf.zip, который поставляется с различными редакциями DB2 UDB. Его можно найти в подкаталоге SQLLIB\samples\java\Websphere каталога инсталляции DB2. WORF также поставляется с WebSphere Information Integrator, WebSphere Studio Version 5 и Rational Application Developer 6.
DB2 как потребитель Web-сервисов требует от вас установки DB2 XML extender, который содержит соотвествующие UDF. В статье DB2 Web services for DB2 practitioners вы можете детально ознакомиться с тем, как это можно сделать.
В случае, когда DB2 является поставщиком Web-сервисов, клиентское приложение может обращаться к DB2 UDB через WSDL интерфейс. Вы можете определить WSDL интерфейс к данным в DB2 используя возможности WORF. Если говорить проще, то доступ к данным DB2 может быть описан посредством XML файла, называемого DADx-файл. Этот XML файл может содержать ряд операций. Каждая операция может состоять из последовательности вызовов хранимых процедур DB2, операций записи или чтения XML документов или SQL операторов CREATE, SELECT, UPDATE, DELETE. В Листинге 1 приведет пример DADx-файла с одной операцией.
Листинг 1. Employee Web service (sample.dadx) показывает операцию SQL SELECT
В Листинге 1 определена единственная операция "showemployees", которая извлекает данные из таблицы employee базы данных DB2. DADx-файл может содержать несколько операций. Эти операции все развертываются как Web-сервисы в рамках одного модуля приложения.
Среда Web-серивсов DB2 (WORF) предоставляет инфраструктуру для автоматического создания WSDL интерфейсов каждой из определенных вами операций. WORF генерирует тестового клиента для Web-сервиса в виде Web-приложения, используя сервлеты и JSP. Тестовый клиент может использовать простое HTTP или SOAP соединение. HTTP соединение полезно для непостредственного тестирования Web-сервиса DB2, используя Web-браузер. SOAP соединение может быть использовано клиентскими приложениями Web-сервиса для создания распределенных приложений. Данные возвращаются Web-сревисом DB2 в виде XML-документа или Java-объекта. Парсеры XML существуют для различных языков программирования, включая Java и C.
Когда вы предоставляете клиентам Web-сервиса доступ к данным через DADx, подумайте о том, чтобы логику доступа к данным разместить в хранимой процедуре DB2. Хранимые процедуры предоставляют очень мощные возможности для создания уровня абстракции для доступа к данным DB2. Хранимые процедуры DB2 могут быть созданы на различных языках программирования, включая Java и стандартный язык SQL процедур.
После того, как вы определили в DADx-файле операции для доступа к данным DB2, вы должны развернуть DADx-файл и его среду исполнения (Apache SOAP или Apache axis) в одной из поддерживаемых сред Java Web-сервера (Apache/Jakarta Tomcat или IBM WebSphere Application Server или DB2 application server).
После того, как вы протестировали и развернули Web-сервис DB2, любой клиентв Web-сервиса может начать его использовать. Использование WebSphere Application Server для развертывания Web-сервисов DB2 предоставляет дополнительные выгоды, такие как пул коннектов с базой данных и централизованное администрирование. WebSphere может быть развернута с использованием подходов вертикального или горизонтального масштабирования для обеспечения отказоустойчивости и обеспечения большого объема транзакций для популярных Web-сервисов DB2.
DB2 ведет себя как потребитель Web-сервисов в том случае, когда в рамках SQL запроса вызывается какой-либо Web-сервис. Например, на Рисунке 1 функция getRate("country","country") Web-сервиса DB2 возвращает текущий курс конвертации валют двух стран. Поскольку эти данные постоянно меняются, поставщик Web-сервисов может предоставить вам наиболее актуальное значение курса для вашего приложения. В этом примере мы используем возможности SQL для расчета цены комплектующих в канадских долларах, прежде чем вернуть значение для приложения. Использование SQL запросов облегчает обращение к Web-сервису и интеграцию получаемых от него данных. За счет использования SQL для доступа к Web-сервису вы можете сэкономить свои усилия, поскольку манипуляция данными происходит в контексте выполнения SQL-запроса прежде чем результат будет возвращен клиентскому приложению. "Не-DB2" клиентское приложение Web-сервиса может достичь тех же результатов без использования расширений SQL Web-сервиса DB2, но это потребует дополнительных усилий с точки зрения программирования.
Поскольку эти Web-сервисы используются в рамках SQL запросов, то тестирование Web-сервиса можно провести достаточно просто, например с использованием процессора командной строки DB2 (DB2's Command Line Processor - CLP). Инструменты играют важную роль при обращении к данным Web-сервиса из SQL. Конвертация существующего WSDL интерфейса в функцию DB2 (табличную или скалярную) упрощается за счет использования плагина WebSphere Studio, который позволяет конвертировать WSDL в SQL функции DB2. Подобная автоматизация задач также включена в WebSphere Studio версии 5 и в Rational Application Developer 6 и более поздних версий.
Доступ к данным Web-сервиса в контексте SQL запроса требует сервера приложений Java или поставщика Web-сервисов DB2. Эти расширения SQL создаются администратором базы данных DB2 или разработчиками базы данных. Во время исполнения SQL запроса осуществляется соединения с поставщиком Web-сервиса и возвращаемый документ представляется либо в виде реляционной таблицы или скалярного значения.
Grid-вычисления адаптировали Web-Сервисы как чать Open Grid Services Architecture - новой модели для данного типа распределенных вычислений, использующей Web-сервисы для согласования работы grid.