Использование pureXML в Flex-приложении микроблога: Часть 1. Реализация Web-сервисов с помощью DB2 pureXML

Настройка базы данных для примера приложения микроблога с помощью IBM DB2 Express-C и IBM Data Studio

Возможности PureXML®, реализованные в IBM DB2®, позволяют хранить XML в базе данных без всяких изменений, так что приложения Adobe Flex могут непосредственно читать XML и заполнять пользовательские интерфейсы Flex. В этом цикле статей из трех частей мы создадим приложение микроблога, которое использует pureXML, Web-сервисы, Adobe Flex и даже позволяет публиковать заметки микроблога в Twitter.

Джо Леннон, разработчик ПО, Независимый разработчик

Джо Леннон - 24-летний разработчик ПО из города Корк, Ирландия. Джон является автором вскоре выходящей в издательстве Apress книги Beginning CouchDB, а также нескольких технических статей и руководств на IBM developerWorks. В свободное время Джо любит играть в футбол, возиться с гаджетами и ставить игровые рекорды на своей Xbox 360.



29.08.2011

Об этом цикле статей

Часто используемые сокращения

  • API: Application program interface (Интерфейс прикладных программ)
  • DVD: Digital Versatile Disc или Digital Video Disc
  • HTML: Hypertext Markup Language
  • HTTP: Hypertext Transfer Protocol
  • IDE: Integrated Development Environment (Интегрированная среда разработки)
  • JRE: Java™ Runtime Environment (Среда разработки Java)
  • MXML: Minimal XML
  • REST: REpresentational State Transfer
  • RSS: Really Simple Syndication
  • SDK: Software Development Kit
  • SQL: Structured Query Language (Язык структурированных запросов)
  • URL: Uniform Resource Locator
  • XML: Extensible Markup Language

В первой части говорится о Web-сервисах и о том, как включить их с помощью DB2 pureXML при настройке DB2® Express-C 9.7 на системе Microsoft® Windows®. В этой статье мы создадим базу данных, а именно базу данных для примера приложения микроблога. Далее вы узнаете, как представить данные из базы данных микроблога в качестве Web-сервисов с помощью pureXML. Наконец, вы увидите, как использовать Web-браузер для проверки работоспособности Web-сервиса.

Во второй части мы расскажем об Adobe Flex® и о том, как хорошо он работает с данными, представленными в форме XML посредством Web-сервисов. Мы установим Flex SDK на Windows-систему, познакомимся с основами MXML и ActionScript и покажем, как состыковать их для создания Flex-приложения. Вы узнаете, как написать пользовательский интерфейс приложения микроблога с помощью Flex-компонентов и как проверить его на примере данных XML. Когда пользовательский интерфейс будет готов, мы интегрируем его с Web-сервисами DB2 pureXML, созданными в первой части цикла.

Flex – это удобный метод создания RIA (Rich Internet Applications)-приложений, но что, если данные нужно представить иначе? В третьей части вы научитесь использовать Web-сервисы pureXML для публикации записей микроблогов на странице HTML. Синдикация (распространение) – важный аспект работы с любым приложением социальных сетей, поэтому вы научитесь также публиковать свои записи микроблога в канале RSS. Наконец, вы узнаете, как интегрировать приложение микроблога с Twitter, чтобы публиковать новости не только в своем собственном приложении, но и в Twitter.

К концу этого цикла вы будете обладать инструментами и знаниями, необходимыми для создания многофункциональных приложений микроблогинга, которые можно легко расширять или изменять в соответствии с вашими требованиями или требованиями вашей организации.


Предварительные замечания

Вам нужно будет установить сервер баз данных DB2 – редакцию DB2 Express-С. За сведениями о том, как загрузить и установить DB2 Express-C, обращайтесь к разделу Ресурсы в конце этой статьи. Можно также использовать IBM® Data Studio и WebSphere® Application Server Community Edition (далее – Community Edition) для развертывания сервисов на Web-сервере. Информацию по загрузке см. в разделе Ресурсы.


Введение в DB2 pureXML

IBM DB2 – это система управления реляционными базами данных, которая работает на широком спектре устройств и операционных систем. Она доступна в нескольких редакциях - от начального уровня, СУБД Express-C, и до Enterprise Server Edition. В этой статье мы будем использовать версию Express-C, поскольку она проста в установке и настройке и доступна для бесплатной загрузки. По своей концепции DB2 Express-C очень похожа на Oracle Database XE (Express Edition) и Microsoft SQL Server Express. Однако, в отличие от своих конкурентов, DB2 Express-C не налагает ограничений по количеству пользователей или размеру базы данных.

Хотя DB2 Express-C – это простейшая база данных производственного уровня в семействе продуктов DB2, она включает поддержку pureXML – функции DB2, которая позволяет хранить в базе данных данные XML в их первозданном виде. Важным аспектом pureXML является то, что данные XML сохраняются в базе данных без всякого преобразования или сохранения в виде неформатированного текста. Все это делается прозрачно, так что не нужно беспокоиться о том, в какой форме хранятся ваши рабочие данные – как данные SQL традиционных типов или как XML. Кроме того, все данные XML защищены теми же средствами безопасности и сохранения целостности данных, что и традиционные реляционные данные. Это позволяет быстро разрабатывать приложения, которым требуются данные XML, реляционные данные или гибридный набор из XML и реляционных данных.


Введение в Web-сервисы DB2

Современные приложения зачастую внедряются с использованием сервисно-ориентированной архитектуры (SOA), причем Web-сервисы обеспечивают стандартизированные и независимые от платформы/технологии средства представления бизнес-логики через Интернет или Интранет. Web-сервисы, как правило, создаются с помощью:

  • брокера сообщений на базе XML Simple Object Access Protocol (SOAP);
  • стандартизированного языка описания интерфейса на базе XML Web Services Description Language (WSDL);
  • среды каталога Web-сервисов Universal Description Discovery and Integration (UDDI).

Web-сервисы для представления данных в базе данных DB2 можно создавать с помощью IBM WebSphere Studio. WebSphere Studio предоставляет инструменты для создания интерфейсов WSDL для данных DB2 и публикации Web-сервисов непосредственно в реестре UDDI. Эти Web-сервисы можно развертывать в Интернете, используя IBM WebSphere Application Server. К счастью, инфраструктура Web-сервисов DB2 берет на себя заботу обо всем коде Java Database Connectivity (JDBC), который требуется для взаимодействия с данными DB2.

Среда Web-сервисов DB2 Object Runtime Framework (WORF) позволяет автоматически генерировать интерфейсы WSDL для набора операций с базами данных, определенного в файле Document Access Definition Extension (DADX). Этот файл DADx устанавливается вместе с сервером Apache Axis SOAP на подходящий сервер приложений, такой как WebSphere Application Server. После развертывания можно получить доступ к Web-сервису с помощью любого клиента, способного работать с Web-сервисами. Во второй части этого цикла мы будем использовать платформу Adobe Flex для работы с некоторыми Web-сервисами DB2.


Настройка базы данных для микроблога

После завершения установки и закрытия установщика запускается приложение DB2 First Steps. Прежде чем открыться, оно может предложить вам создать профиль браузера для работы с JavaScript и доступа к локальным файлам DB2. В этом случае нажмите кнопку Create profile (Создать профиль). Приложение DB2 First Steps выглядит как на рисунке 1.

Рисунок 1. DB2 First steps
First steps for DB2 Database для Linux, UNIX и Windows

Если вы хотите создать тестовую базу данных, сделайте это. Можно использовать кнопку "Create new database" (Создать новую базу данных) для запуска мастера создания баз данных DB2. Но этого делать не нужно, так как мы создадим базу данных с поддержкой XML, которую нельзя создать с помощью этого мастера. Покончив с приложением DB2 First Steps, закройте его. Следующим шагом будет создание базы данных DB2 для приложения микроблога.

Чтобы создать новую базу данных DB2, необходимо открыть DB2 Command Editor. Выберите Start>Programs>IBM DB2>DB2COPY1 (Default)>Command Line Tools>Command Editor, и когда загрузка закончится, вы должны увидеть DB2 Command Editor, как на рисунке 2.

Рисунок 2. DB2 Command Editor
Окно DB2 Command Editor с разделами редактора и результата

В главном разделе редактора (пустое пространство под панелью инструментов с кнопками воспроизведения и останова) введите следующий оператор и нажмите Выполнить (кнопка со значком воспроизведения): create database mblog using codeset UTF-8 territory us.

Этот процесс может занять минуту или около того, так что будьте терпеливы. Когда база данных будет создана, вы увидите сообщение "DB20000I The CREATE DATABASE command completed successfully" в окне результата. Теперь, когда вы создали базу данных, поручите DB2 Command Editor подключить ее. Введите в области редактора следующую команду и опять нажмите кнопку Выполнить: connect to mblog

Если все пойдет хорошо, вы должны получить сообщение вида "A JDBC connection to the target has succeeded" (Подключение JDBC к цели удалось) о том, что вы подключены к базе данных mblog. Теперь создайте новую таблицу с именем status_updates, которая будет хранить заметки для микроблога в формате XML. Введите оператор, приведенный в листинге 1, в окно редактора и нажмите Выполнить.

Листинг 1. Создание таблицы status_updates
create table status_updates (
 data xml
)

Вы должны получить положительный ответ, указывающий на то, что команда SQL выполнена успешно, как на рисунке 3.

Рисунок 3. Команда SQL выполнена успешно
Результат успешного завершения команды SQL

А теперь попробуйте ввести в базу данных какие-нибудь данные XML. Введите оператор INSERT, приведенный в листинге 2, в окно редактирования DB2 Command Editor.

Листинг 2. Вставка заметки XML
insert into status_updates values (
 '<update display="true">
 <date_created>2009-08-06T21:20:19</date_created>
 <text>Hello World!</text>
 </update>'
)

Теперь нажмите Выполнить, и вы снова должны получить ответ, указывающий на успешное выполнение команды.

Одна из проблем, препятствующих вводу этих данных в обычные столбцы СУБД, заключается в том, что для этого не определено никаких правил – никаких типов данных, идентификаторов NOT NULL и т.п. Можно легко ввести XML-документ, который не имеет никаких зависимостей, и он будет принят. Здесь-то вступает в игру XML-схема. XML-схему можно использовать для определения приемлемого формата данных XML. Затем, при выполнении оператора вставки, можно проверить данные на соответствие этой схеме.

Чтобы создать XML-схему, достаточно открыть текстовый редактор (например, Notepad) и создать новый файл. Важно, где его сохранить, и для простоты мы сохраним схему в папке C:\xmlschemas\updates.xsd. Если вы выберете другое место, обязательно укажите его при регистрации схемы. Введите в свой файл код из листинга 3 и сохраните его.

Листинг 3. XML-схема updates.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="update">
 <xs:complexType>
 <xs:sequence>
 <xs:element name="date_created" type="dateTime"/>
 <xs:element name="text" type="normalizedString"/>
 </xs:sequence>
 <xs:attribute name="display" type="xs:boolean" default="true"/>
 </xs:complexType>
 </xs:element>
</xs:schema>

Схема из листинга 3 определяет составной элемент update, состоящий из двух элементов:

  • date_created– A dateTime
  • text– A normalizedString

Элемент NormalizedString просто предписывает XML-процессору удалять все лишние пробелы вокруг строки при обработке данных.

Теперь у нас есть XML-схема, хранящаяся в файле, и ее нужно зарегистрировать в DB2, чтобы СУБД знала, как проверять XML-данные при их включении в базу данных. Введите оператор, приведенный в листинге 4, в окно редактирования DB2 Command Editor.

Листинг 4. Регистрация XML-схемы в DB2
register xmlschema 'http://mblog.example.com' from 
'C:/xmlschemas/updates.xsd' as mblog.status_update complete

Если XML-схема зарегистрирована правильно, вы получите следующий ответ: "DB20000I The REGISTER XMLSCHEMA command completed successfully" (рисунок 4).

Рисунок 4. XML-схема зарегистрирована успешно
Результат успешной регистрации XML-схемы

Стоит отметить, что само по себе определение XML-схемы и ее регистрация в базе данных не означают, что любые введенные XML-данные автоматически сверяются с этой схемой. Другими словами, при выполнении команды INSERT нужно проверять XML вручную. Это делается с помощью функции XMLVALIDATE, как показано в листинге 5.

Примечание. Иначе, можно создать триггер базы данных, который будет выбирать каждую команду INSERT в таблице и вызывать проверку XML-данных с помощью функции XMLVALIDATE перед выполнением этой команды. В этой статье мы будем просто проверять свои собственные операторы INSERT.

Листинг 5. Проверка XML-данных по XML-схеме
insert into status_updates values (
 xmlvalidate(xmlparse(document('
 <update display="true">
 <date_created>2009-08-09T21:09:10</date_created>
 <text>This should validate!</text>
 </update>
 ')) according to xmlschema id mblog.status_update)
)

Так как XML из листинга 5 соответствует нашей схеме, мы должны получить ответ, что команда SQL выполнена успешно. Теперь посмотрим, что произойдет, если попытаться вставить какие-нибудь недопустимые данные. В листинге 5 замените текст между тегами <date_created> и </date_created> на This is not a valid datetime. Теперь попробуйте снова выполнить оператор. На этот раз вы должны получить сообщение об ошибке "SQL16105N Incorrect XML data" (SQL16105N некорректные XML-данные). Затем DB2 предоставляет некоторые полезные сведения об этой ошибке и предлагает способы решения проблемы – в данном случае "Correct the XML document and try the operation again" (Исправьте документ XML и повторите операцию). Теперь, когда в базе данных находятся корректные XML-данные, посмотрим, как обратиться к этим данным.

Запрашивать XML-данные, хранящиеся в базе данных DB2 9, можно с помощью двух языков: SQL (SQL/XML) и XQuery. Можно даже использовать гибридные запросы, в которых сочетаются выражения SQL и XQuery. Сначала выполним SQL-запрос, чтобы получить содержимое таблицы status_updates. В редакторе команд DB2 введите следующий оператор SQL: select data from status_updates.

При нажатии кнопки Выполнить редактор команд перейдет на вкладку Results Query, и вы увидите табличную структуру с колонкой Data и полем с текстом XML, а также кнопку с тремя точками. На рисунке 5 эта кнопка обведена прямоугольником.

Рисунок 5. Представление результатов редактора команд DB2
Представление результатов редактора команд DB2

Нажмите эту кнопку, чтобы открыть XML Document Viewer, как показано на рисунке 6. На вкладке Tree View данные XML представлены в виде древовидной структуры, и вы должны увидеть атрибут display и два элемента date_created и text, которые раскрыты для отображения их значений.

Рисунок 6. DB2 XML Document Viewer
Окно просмотра XML-документа DB2 со значениями элементов date_created и text

Главная проблема использования SQL-операторов для получения XML-данных заключается в том, что для фильтрации данных XML нельзя использовать выражения фильтров, такие как WHERE. Нельзя также выполнить агрегирование или слияние этих данных с помощью SQL. Однако для выполнения запросов этого типа можно использовать SQL с XML-расширениями (SQL/XML).

Как и следовало ожидать, SQL/XML задуман как средство расширения языка запросов SQL для выполнения над XML-данными тех операций, которые не допускают традиционные выражения SQL. Например, SQL/XML можно использовать для поиска в таблице строк, в которых отдельный элемент XML, хранящийся в столбце XML, имеет определенное значение. Предположим, что вы хотите подсчитать строки, в которых столбец XML-данных содержит текстовый элемент со значением This should validate!. Если бы он хранился в обычном столбце VARCHAR таблицы DB2, можно было бы использовать SQL-оператор, приведенный в листинге 6.

Листинг 6. SQL-оператор
select count(*) from status_updates
where text = 'This should validate!'

Но так как данные text находятся в XML-документе, хранящемся в столбце XML, этот оператор использовать нельзя. Вместо него можно применить оператор SQL/XML, как показано в листинге 7.

Листинг 7. Использование SQL/XML для фильтрации данных XML
select count(*) from status_updates
where xmlexists('$u/update[text="This should validate!"]'
passing status_updates.data as "u")

Этот оператор должен возвращать в окне Query Results результат, равный 1, как показано на рисунке 7.

Рисунок 7. Результат выполнения оператора SQL/XML
Результат выполнения оператора SQL/XML

Если вы хотите выполнить простой тест на этот запрос, попробуйте изменить текст на что-нибудь некорректное и выполнить запрос снова. На этот раз вы должны получить результат, равный нулю. Теперь используем SQL/XML для вызова элементов XML-документа так же, как если бы они были представлены в традиционной таблице SQL. Для этого воспользуемся функцией XMLTABLE. Введите в окно редактора команд оператор, приведенный в листинге 8.

Листинг 8. Использование XMLTABLE для форматирования запросов SQL/XML
select t.date_created, t.text from status_updates su, 
xmltable('$u/update' passing su.data as "u"
columns date_created varchar(100) path 'date_created',
 text varchar(500) path 'text') as t

Выполнение этого запроса должно возвращать результат, как на рисунке 8. На вкладке результатов запроса вы увидите значения элементов DATE_CREATED и TEXT.

Рисунок 8. Результат запроса XMLTABLE
Результат запроса XMLTABLE со значениями элементов DATE_CREATED и TEXT

Наконец, посмотрим, как можно использовать XQuery для извлечения данных из таблицы. Опять же, введите в окно редактора команд DB2 следующий оператор: xquery db2-fn:xmlcolumn('STATUS_UPDATES.DATA').

Важно, чтобы имена таблицы и столбцов были набраны в верхнем регистре, иначе запрос не сработает. Нажмите Execute, чтобы вызвать результат в раздел результатов, как показано на рисунке 9.

Рисунок 9. Результат оператора XQuery
Результат выполнения оператора XQuery для элементов date_created и text

Прежде чем завершить этот раздел, используем XQuery для фильтрации данных XML и возврата только определенного элемента. В этом случае мы получим только элемент text, а элемент date_created отфильтруется (листинг 9).

Листинг 9. Фильтрация XML с помощью XQuery
xquery
for $y in db2-fn:xmlcolumn('STATUS_UPDATES.DATA')/update
where $y/date_created="2009-08-09T21:09:10"
return $y/text

Ожидаемый результат этого запроса представлен на рисунке 10.

Рисунок 10. Результат фильтрации оператором XQuery
Результат фильтрации текстовых элементов оператором XQuery

Теперь, когда база данных микроблогов создана, и вы получили некоторый опыт по вводу и извлечению XML-данных, можно продвинуться вперед и создать какие-нибудь Web-сервисы, работающие с этими данными.


Представление данных микроблогов с помощью Web-сервисов

Для создания Web-сервисов воспользуемся IBM Data Studio, а для их развертывания на Web-сервере – WebSphere Application Server Community Edition. Сначала установим Community Edition. Перейдите на http://www.ibm.com/developerworks/downloads/ws/wasce/ и нажмите кнопку Download now, чтобы загрузить установочный архив. Чтобы загрузить пакет, нужно войти под своим идентификатором IBM. Загрузите подходящую версию для своей операционной системы (для целей данной статьи я установил пакет на Windows).

После установки загрузчика нажмите кнопку Next, чтобы перейти на экран License Agreement. Прочтите лицензию и выберите I accept the terms of the License Agreement, затем нажмите Next, чтобы продолжить. Примите каталог установки по умолчанию и нажмите Next. Просмотрите список файлов установки и нажмите Install, чтобы приступить к установке. После завершения установки нажмите Done для выхода из программы установки. Пока это все, что нужно сделать с Community Edition. Data Studio позаботится о запуске Application Server, когда мы будем развертывать Web-сервисы.

Теперь, когда Community Edition установлена, установите Data Studio (см. ссылку для загрузки в разделе Ресурсы). Загрузите IDE package, как показано на рисунке 11. В этот пакет входят все функции, необходимые для создания и развертывания Web-сервисов.

Рисунок 11. Загрузка пакета Data Studio IDE
URL для загрузки пакета Data Studio IDE

Чтобы получить доступ к области загрузки, нужно войти в систему под своим идентификатором IBM. На странице загрузки выберите соответствующую версию для своей операционной системы (в этой статье используется Windows) и нажмите кнопку Continue. Система может затребовать некоторые сведения о том, как вы собираетесь ее использовать. Заполнив анкету, на следующем экране установите флажок рядом с IBM Data Studio (IDE) Install и нажмите кнопку Download Now, чтобы начать загрузку. Файл "весит" 687 МБ, так что вам потребуется высокоскоростное интернет-соединение (или много терпения!).

Когда загрузка завершится, распакуйте архив и запустите файл setup.exe для установки инсталлятора Data Studio. На начальном экране выберите язык установки и нажмите OK, чтобы войти в приложение Launchpad.

На следующем экране можно просмотреть информацию, содержащуюся в каждом из расположенных слева разделов, и когда вы будете готовы, нажмите кнопку Install Product, чтобы выполнить Installation Manager. На экране Install Packages примите значения по умолчанию и нажмите кнопку Next, чтобы продолжить (рисунок 12).

Рисунок 12. IBM Installation Manager – установка пакетов
IBM Installation Manager– установка пакетов

Теперь система попросит прочесть лицензионные соглашения. Сделав это, выберите I accept the terms of the License Agreement и нажмите кнопку Next, чтобы продолжить. На экране Location примите значения по умолчанию и нажмите кнопку Next. На следующем экране примите значения режима (Create a new package group – Создать новую группу пакетов) и каталога установки по умолчанию, а затем нажмите Next. Вам будет предоставлена возможность дополнить существующую установку Eclipse IDE, если она есть. Оставьте флажки как есть и нажмите Next.

В разделе Features сначала нужно выбрать языки, которые вы хотите установить. По умолчанию будет установлен обязательный английский вариант. Если нужно установить дополнительные языки, отметьте их. В противном случае просто нажмите Next. Теперь вам будет предоставлена возможность выбрать компоненты для установки. Опять же, оставьте все как есть и нажмите Next. Наконец, вы достигли экрана Installation Summary, изображенного на рисунке 13. Здесь можно проверить свой выбор и в случае необходимости вернуться назад и изменить любые параметры. Когда вы будете готовы, нажмите кнопку Install, чтобы начать процедуру установки.

Рисунок 13. IBM Installation Manager – Summary
IBM Installation Manager– Summary

Когда установка будет завершена, вы увидите экран, показанный на рисунке 14, что говорит об успешной установке. Нажмите кнопку Finish, чтобы запустить IBM Data Studio.

Рисунок 14. IBM Installation Manager – установка завершена
IBM Installation Manager– установка завершена

При запуске Data Studio может попросить вас выбрать рабочее пространство. Выберите вариант Use this as the default and do not ask again (Использовать это значение по умолчанию и больше не спрашивать) и нажмите кнопку OK (рисунок 15).

Рисунок 15. IBM Data Studio – Workspace Launcher
IBM Data Studio– Workspace Launcher

На первом экране вы увидите экран приветствия Data Studio. Нажмите кнопку со стрелкой в верхней центральной части экрана (обведена на рисунке 16), чтобы закрыть окно и войти в главную область разработки.

Рисунок 16. IBM Data Studio – экран приветствия
IBM Data Studio– экран приветствия

В нижней левой части главного окна Data Studio вы увидите Data Source Explorer, в котором представлены доступные соединения с базами данных. Если вы следовали этой статье с самого начала, здесь должна появиться база данных MBLOG. Щелкните правой кнопкой мыши на соединении MBLOG , чтобы открыть контекстное меню, и выберите Connect. Появится новое окно со свойствами соединения с базой данных, и вам будет предложено ввести имя пользователя. Введите имя пользователя базы данных и пароль (тот, что вы создали для таблицы status_updates). Установите флажок Save password и нажмите Test Connection. Если соединение работает правильно, вы увидите сообщение "Ping succeeded!", как на рисунке 17.

Рисунок 17. Настройка соединения с базой данных
Настройка соединения с базой данных

Нажмите OK, чтобы закрыть окно Properties. Теперь Data Studio инициирует соединение с базой данных MBLOG, и это соединение должно дополниться двумя новыми параметрами: Instance и MBLOG. Щелкните на значке развертывания слева от параметра MBLOG, чтобы увидеть различные типы объектов базы данных (Buffer Pools, Groups и т.п.) Теперь, когда мы установили соединение с базой данных, необходимо создать новый проект разработки.

Выберите File>New>Data Development Project, чтобы открыть диалоговое окно нового проекта. Введите имя проекта Microblog и нажмите кнопку Next. На следующем экране вам будет предложено выбрать существующее соединение с базой данных или создать новое. Выберите соединение MBLOG и нажмите Finish, чтобы закрыть диалоговое окно (рисунок 18).

Рисунок 18. Выбор соединения с базой данных
Выбор соединения с базой данных

Теперь вы вернетесь в главную рабочую область Data Studio. В левом верхнем углу можно заметить, что параметр Microblog теперь фигурирует на панели Data Project Explorer. Щелкните на значке развертывания слева от этого параметра, чтобы увидеть разные части проекта (пакеты PL/SQL, сценарии SQL и т.п.).

Создадим сценарий SQL, который будет просто обращаться к таблице status_updates и возвращать XML-данные, хранящиеся в столбце данных каждой строки. В только что развернутом списке щелкните правой кнопкой на параметре SQL Scripts и выберите New>SQL or XQuery Script. Откроется диалоговое окно, запрашивающее имя сценария и режим редактирования. Введите имя getAllUpdates и нажмите Finish.

Будет создан и открыт в главном окне редактора файл GetAllUpdates.SQL. Введите в этом окне следующий оператор: select data from "MBLOG".status_updates

Выберите File -> Save, чтобы сохранить файл. Если вы хотите проверить оператор SQL, нажмите F5, чтобы запустить сценарий. Результаты будут показаны на вкладке SQL Results в нижней части экрана.

Затем создайте хранимую процедуру, которую мы будем использовать для вставки новой строки в свою таблицу базы данных. На панели Data Project Explorer в верхней левой части окна щелкните правой кнопкой мыши на Stored Procedures под проектом Microblog. Выберите New>Stored Procedure, чтобы открыть диалоговое окно создания новой хранимой процедуры. Присвойте ей имя insert_update и выберите PL/SQL из раскрывающегося меню Language, затем нажмите кнопку Finish (рисунок 19).

Рисунок 19. Новая хранимая процедура
Новая хранимая процедура insert_update

На экране Parameters нажмите кнопку Add, чтобы добавить новый параметр. Во всплывающем окне оставьте значение In для режима Parameter и дайте ему имя text. Он должен иметь тип PL/SQL VARCHAR с длиной 500. Нажмите Add, чтобы добавить параметр в процедуру.

Процедура INSERT_UPDATE будет сохранена в разделе хранимых процедур и открыта в окне редактора. Изменим этот код так, чтобы он выглядел как в листинге 10. Замените MBLOG схемой, где хранится ваша таблица status_updates.

Листинг 10. Код хранимой процедуры INSERT_UPDATE
CREATE OR REPLACE PROCEDURE INSERT_UPDATE(IN c_text VARCHAR(500), IN display VARCHAR(5))
LANGUAGE SQL
BEGIN
 INSERT INTO "MBLOG".status_updates(data) VALUES(
 XMLDOCUMENT(XMLELEMENT(
 name "update",
 XMLATTRIBUTES(display as "display"),
 XMLFOREST(
 replace(varchar_format(current timestamp, 'YYYY-MM-DD HH24:MI:SS'), 
' ', 'T') as "date_created",
 text as "text"
)
 ))
 );
 RETURN 1;
END

Теперь нужно установить хранимую процедуру в базу данных, чтобы проверить ее. Щелкните правой кнопкой мыши на параметре INSERT_PROCEDURE в окне Data Project Explorer и выберите Deploy. Для базы данных Target выберите Use current database (Использовать текущую базу данных) и соответствующую целевую схему. Нажмите Finish для завершения процедуры. В Data Source Explorer опуститесь по своей схеме до хранимых процедур и найдите только что скомпилированную процедуру INSERT_UPDATE. Щелкните на процедуре правой кнопкой мыши и выберите Run. Это откроет диалоговое окно Specify Parameter Values. В параметре c_text укажите значение Testing procedure, а в параметре c_display – значение true. Нажмите OK, чтобы выполнить. Если все пойдет по плану, вы должны увидеть сообщение "Run completed". Теперь вернитесь к своему сценарию SQL getAllUpdates и еще раз нажмите F5. На этот раз вы увидите новую строку, которую только что создали с помощью хранимой процедуры.

Теперь можно браться за создание Web-сервисов. В Data Project Explorer щелкните правой кнопкой мыши на Web Services и выберите New Web Service. Откроется диалоговое окно New Web Service (рисунок 20). Выберите проект Microblog и введите имя StatusUpdates, затем замените URI Namespace на urn:updates.

Рисунок 20. Новый Web-сервис
Окно Edit Web Service с новым Web-сервисом

Теперь добавим к Web-сервису сценарий SQL getAllUpdates.SQL. В Data Project Explorer выберите сценарий SQL getAllUpdates.sql и поместите его в Web-сервис StatusUpdates. Внутри Web-сервиса StatusUpdates будет создана операция getAllUpdates. Теперь возьмите хранимую процедуру INSERT_UPDATE и поместите ее туда же. Теперь Web-сервис StatusUpdates состоит из двух операций: getAllUpdates и INSERT_UPDATE. (рисунок 21)

Рисунок 21. Операции Web-сервиса StatusUpdates
Операции Web-сервиса StatusUpdates

Следующий шаг заключается в создании экземпляра Web-сервера, на котором можно установить созданный Web-сервис. В Data Studio выберите Window>Show View>Other, а в диалоговом окне Show View – Server, затем Servers. Нажмите OK, и в рабочей области откроется вкладка Servers (рисунок 22).

Рисунок 22. Окно серверов
Окно серверов

Теперь в нижней части окна Data Studio должна быть активна вкладка серверов. Щелкните правой кнопкой мыши в пустой белой области и выберите New>Server, чтобы открыть мастер New Server. На первом экране мастера примите параметры по умолчанию, перечисленные на рисунке 23.

Рисунок 23. Окно определения нового сервера
Окно определения нового сервера с выбранными параметрами по умолчанию

Параметры сервера по умолчанию:

  • host name: localhost
  • server type: IBM WASCE v2.1 Server
  • name: IBM WASCE v2.1 Server at localhost

Нажмите Next. В окне New Server – New IBM WASCE v2.1 Runtime вам будет предложено выбрать местоположение JRE и WASCE. Выберите нужные значения и нажмите Next (рисунок 24).

Рисунок 24. Выбор местоположения JRE и WASCE
Выбор местоположения JRE и WASCE

Выбранные значения:

  • JRE: jdk
  • Application Server installation Directory: C:\Program Files\IBM\WebSphere\AppServerCommunityEdition

На остальных экранах диалогового окна New Server просто принимайте значения по умолчанию и нажимайте Next. Добравшись до экрана Add and Remove Projects, нажмите Finish. Теперь запустим Web-сервер и убедимся, что он работает. Щелкните правой кнопкой мыши на экземпляре, который вы только что добавили на вкладке Servers, и выберите Start. Процесс может занять пару минут, так что будьте терпеливы. Когда он завершится, вкладка консоли закроется. На вкладке Servers вы увидите сервер в состоянии "Started", как показано на рисунке 25.

Рисунок 25. Запущенный Web-сервер
Запущенный Web-сервер

Теперь, когда Web-сервис определен и экземпляр Web-сервера запущен и работает, на Web-сервер можно установить наш Web-сервис. В Data Project Explorer щелкните правой кнопкой мыши на Web-сервисе StatusUpdates и выберите Build and deploy. Откроется мастер установки Web-сервисов. На этом экране выберите радиокнопку Server и убедитесь, что в развертывающемся списке выбрано v2.1 Server at localhost. Флажок Register database connection with Web server должен быть установлен, как и флажки протоколов сообщений REST и SOAP over HTTP. Когда вы будете готовы, убедитесь, что ваш выбор совпадает с приведенным на рисунке 26, и нажмите кнопку Finish, чтобы установить Web-сервис.

Рисунок 26. Диалоговое окно установки Web-сервисов
Диалоговое окно установки Web-сервисов

Выбранные значения для установки:

  • Web server, Type: WebSphere Application Server Community Edition, version 2 (все выпуски)
  • Web server, Server: IBM WASCE v2.1 Server at localhost
  • Data handler, Data handler: JDBC
  • Data handler, Register database connection with Web server: выбрано
  • Message protocols, REST (Web access): выбрано
  • Message protocols, SOAP over HTTP: выбрано
  • Parameters, Name: artifact.contextRoot and Value: MicroblogStatusUpdates
  • Parameters, Name: artifact.soapEngine and Value: APACHE_AXIS_1_4
  • Parameters, Name: artifact.soapEngineDirectory and Value: <Use .jar files installed on Web server>

Поздравляю! Если вы не получили никаких сообщений об ошибках, Web-сервис успешно установлен! В следующем разделе вы сможете убедиться, что он работает именно так, как ожидалось. Если при установке Web-сервиса возникли проблемы, проверьте, правильно ли вы указали имена схемы в сценарии SQL и хранимой процедуре – это самые распространенные причины неудачи при установке.


Тестирование Web-сервиса микроблога

Теперь, когда Web-сервис установлен, проверим, работает ли он. Data Studio содержит встроенную утилиту для тестирования Web-сервисов, но в этом разделе мы убедимся, что Web-сервис работает, с помощью Web-браузера. Главная причина в том, что во второй части этого цикла мы будем подключаться к этим Web-сервисам из приложения Adobe Flex, поэтому нужна абсолютная уверенность в возможности запускать эти API из-за пределов Data Studio.

Я считаю, что для отображения XML-данных лучше всего подходит Firefox, поэтому по возможности используйте его. Другие браузеры могут воспроизводить данные немного странно или заставить вас сначала загрузить их на жесткий диск. С установленным Web-сервисом перейдите по следующей ссылке: http://localhost:8080/MicroblogStatusUpdates/rest/StatusUpdates/getAllUpdates

Если Web-сервис работает правильно, вы должны получить ответ, как на рисунке 27.

Рисунок 27. Ответ от метода getAllUpdates Web-сервиса.
Ответ от метода getAllUpdates Web-сервиса

Теперь попробуем ввести некоторые данные другим способом. Введите следующий URL: http://localhost:8080/MicroblogStatusUpdates/rest/StatusUpdates/insertUpdate?C_TEXT=It%20Works!&C_DISPLAY=true, и вы получите ответ, как на рисунке 28.

Рисунок 28. Ответ от метода insertUpdate Web-сервиса
Ответ от метода insertUpdate Web-сервиса

Еще раз перейдите на URL метода getAllUpdates, чтобы проверить, что строка действительно вставлена. В нижней части ответа вы увидите элемент только что введенной строки. Если все работает правильно, то на этом закончим. Вы создали полностью функционирующий Web-сервис.


Заключение

В этой первой статье данного цикла вы познакомились с IBM DB2 pureXML и Web-сервисами. Вы установили DB2 Express-C и создали базу данных для примера приложения микроблога. Вы научились взаимодействовать с данными XML в базе данных DB2 с помощью операторов SQL, SQL/XML и XQuery. Затем вы установили Community Edition и IBM Data Studio. После этого создали сценарий SQL и хранимую процедуру для доступа к данным status_updates и добавили новые данные. Затем научились отображать эти методы в Web-сервисе и устанавливать его на сервер Community Edition (WASCE). Наконец, вы узнали, как проверить эти методы с использованием запросов RESTful HTTP GET в своем Web-браузере.

В части 2 вы будете опираться на то, что уже усвоили. С помощью Adobe Flex мы создадим привлекательный пользовательский интерфейс с использованием Web-сервиса, созданного в этой статье. Вы узнаете все, что нужно, чтобы создать приложение Flex и принимать данные от Web-сервиса - от самой установки Flex SDK до разработки пользовательского интерфейса и серверной части.

Ресурсы

Научиться

  • Оригинал статьи (EN).
  • Знакомство с IBM DB2 Express-C: посетите главную страницу DB2 Express-C.(EN)
  • Finally! Bring native XML data into your relationship data using DB2 Express-C (Eric Long, developerWorks, август 2007 г.): научитесь использовать новые функции DB2 Express-C для хранения XML-документов, обращения к ним и управления ими с использованием SQL/XML и XQuery.(EN)
  • DB2 9 pureXML Guide: прочтите этот документ IBM Redbook, посвященный хранению данных pureXML, а также проектированию и администрированию гибридных баз данных. (EN)
  • DB2 9: pureXML Overview and Fast Start: познакомьтесь с введением в гибридные сервисы XML-данных в DB2 9 for Linux™, UNIX® и Windows.(EN)
  • DB2 pureXML Cookbook: Master the Power of the IBM Hybrid Data Server (Matthias Nicola and Pav Kumar-Chatterjee, IBM Press, август 2009 г.): в этой книге два ведущих специалиста IBM предлагают практические решения и проверенные образцы кода, необходимые специалистам по базам данных для ускоренного создания более качественных XML-решений. (EN)
  • Overview of IBM DB2 pureXML (октябрь 2008 г.): краткий обзор DBMS2. (EN)
  • DB2 Web Services– The Big Picture (Grant Hutchison, developerWorks, август 2002 г.): узнайте, как DB2 и управление данными вписываются в общую картину Web-сервисов. (EN)
  • Access DB2 with Web services: Creating Web services on Windows to access DB2 (Quentin Presley, developerWorks, март 2003 г.): в статье показано, как легко сделать данные DB2 доступными с помощью Web-сервисов. В ней рассматривается использование конфигурации Application Developer WebSphere Studio V5 на платформе Windows для разработки и тестирования Web-сервисов для данных DB2.(EN)
  • Integrated Data Management: Managing data across its lifecycle (Holly Hayes, developerWorks, июнь 2009 г.): обзор концепции и реалий Integrated Data Management и анализ того, как архитектор данных, разработчик или тестер, DBA или оператор данных могут использовать решения IBM для быстрого реагирования на появляющиеся возможности повышения качества обслуживания, снижения риска и сокращения расходов.(EN)
  • Developing with PL/SQL in IBM Data Studio 2.2 and Optim Development Studio 2.2 (Thomas Sharp, IBM developerWorks, август 2009 г.): применение IBM Data Studio 2.2 и Optim Development Studio 2.2 для разработки программ с использованием Oracle PL/SQL(EN).
  • IBM XML certification: как стать сертифицированным IBM разработчиком XML и смежных технологий. (EN)

Получить продукты и технологии

  • DB2 Express-C: бесплатная версия сервера баз данных IBM DB2 – отличная платформа для разработки приложений для малого и среднего бизнеса.
  • WebSphere Application Server Community Edition (the Community Edition): легкий сервер приложений Java EE, построенный на технологии Apache Geronimo.(EN)
  • Get IBM Data Studio: пакет IDE с базовым набором необходимых инструментов разработки и администрирования баз данных для IBM Data Server, используемый в этой статье.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML, Information Management, Open source
ArticleID=754497
ArticleTitle=Использование pureXML в Flex-приложении микроблога: Часть 1. Реализация Web-сервисов с помощью DB2 pureXML
publish-date=08292011