DB2 XML Extender, WORF, и WebSphere Application Developer

Импорт и экспорт XML-данных в DB2 и Web-службы

В этой статье будут рассмотрены вопросы эффективного использования XML-технологии в бизнес-приложениях и интеграции ваших приложений с DB2® Universal Database™, DB2 XML Extender, WORF, WebSphere® Application Developer и WebSphere Application Server. Вы узнаете, как проектировать и создавать XML-приложения Web-служб, разработанных при помощи WebSphere Application Developer и построенных над WORF (DB2 Web Services Object Runtime framework). XML-приложения производят обмен XML-данными с системой управления базами данных DB2.

Получите используемые в данной статье программы: если вы являетесь подписчиком developerWorks, то у вас уже имеется однопользовательская лицензия на использование многих программных продуктов DB2, Lotus, Rational, Tivoli и WebSphere (в том числе, основанной на Eclipse среды WebSphere Studio IDE) для разработки, тестирования, оценки и демонстрации ваших приложений. В противном случае вы можете подписаться сегодня.

Овен Кляйн, Сертифицированный специалист по консалтингу в IT - Software Services for WebSphere, IBM

Овен Кляин является членом команды IBM Software Services for Websphere, находящейся в San Diego, CA. Имеет опыт более 20 лет в области разработки программного обеспечения. Имеет четыре патента на программы, написал красные книги IBM и выступал на многочисленных технических конференциях. В последние пять лет Owen специализировался на J2EE-архитектуре, разработке и развертыванию приложений, основанных на платформе WebSphere. Кроме того, он уже несколько лет работает на многих профильных Web-сайтах.



23.09.2006

Обзор DB2 XML Extender

DB2 XML Extender обеспечивает возможность хранения и доступа к XML-документам, а также возможность составления XML-документов из существующих реляционных данных или декомпозиции XML-документов в реляционные данные. Для этого предоставляется набор новых типов данных, функций и хранимых процедур для DB2 Universal Database. С помощью DB2 XML Extender вы сможете использовать язык SQL в качестве основного метода доступа к вашим XML-документам, что значительно облегчает решение поставленных задач. XML Extender также упрощает администрирование, предоставляя помощника с GUI-интерфейсом, набор хранимых процедур для администрирования и команду Administration.

Хранение и выборка

Используя DB2 XML Extender, вы можете либо хранить в DB2 XML-документ полностью в виде определенного пользователем типа данных, либо отобразить его содержимое в столбцы таблиц DB2. DB2 XML Extender может также хранить XML-документ как внешний файл в файловой системе с указанием ссылки на него в DB2, т.е. вы можете продолжать работать с традиционными "плоскими" файлами и одновременно пользоваться всеми предлагаемыми DB2 преимуществами. DB2 XML Extender предоставляет мощную систему поиска XML-элементов и атрибутов, которая может быть объединена с системой структурного и полнотекстового поиска DB2 XML Extender (см. http://www-3.ibm.com/software/data/db2/extenders/text/index.html).

Интегрирование XML-документов в DB2

DB2 XML Extender предоставляет два варианта интегрирования XML-документов в DB2:

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

DTD-хранилище (Document Type Definition)

DB2 XML Extender предоставляет XML DTD-хранилище. После разрешения XML для базы данных в ней создается справочная таблица XML, называемая DTD_REF. В каждой строке этой таблицы содержится DTD с дополнительной информации о метаданных. В эту таблицу вы можете добавлять ваши собственные DTD. DTD в этой таблице используются для проверки корректности XML-документов.

Определение доступа к документу (Document access definition - DAD)

DB2 XML Extender предоставляет также схему отображения, называемую DAD (document access definition) и используемую для отображения XML-документа в реляционные данные. DAD - это форматированный XML-документ, позволяющий ассоциировать структуру XML-документа с базой данных DB2 при использовании XML-столбцов или XML-коллекций. Структура DAD-файлов различна для XML-столбцов или XML-коллекций. DAD-файлы управляются при помощи таблицы XML_USAGE, которая создается при создании базы данных.

Путь к местонахождению

XML Path Language (XPath)

XML-пути к местонахождению являются основой XML Path Language.

Путь к местонахождению представляет собой последовательность XML-тегов, разделенных символом / (прямой слэш), которые идентифицируют XML-элемент или атрибут. Пути используются в DB2 XML Extender и DB2 Text Extender в следующих ситуациях: Они указываются в качестве входных параметров в UDF для идентификации извлекаемых элементов или атрибутов. Они используются для ссылки на файл отображения между XML-элементом или атрибутом и столбцом DB2 при определении схемы индексирования в DAD для XML-столбцов. Они используются в Text Extender для структурированного текстового поиска. В листинге 1 приведен поддерживаемый в DB2 XML Extender синтаксис пути:

Листинг 1. Синтаксис пути к местонахождению
/
Представляет корневой элемент XML.

/tag1
Представляет элемент tag1 ниже корневого элемента. 

/tag1/tag2/..../tagn
Представляет элемент с именем tagn как потомка наследственной
цепочки от root, tag1, tag2 и до tagn-1. 

//tagn
Представляет любой элемент с именем tagn. Двойной слэш (//)
обозначает ноль или более произвольных тегов.

/tag1//tagn
Представляет любой элемент с именем tagn, являющийся потомком
элемента с именем tag1 от корня. Двойной слэш (//) обозначает
ноль или более произвольных тегов. 

/tag1/tag2/@attr1
Представляет атрибут attr1 элемента с именем tag2, являющийся
потомком элемента с именем tag1 от корня.

/tag1/tag2[@attr1="5"]
Представляет элемент с именем tag2, атрибут attr1 которого
имеет значение 5. tag2 является потомком элемента с именем
tag1 от корня.

/tag1/tag2[@attr1="5"]/.../tagn
Представляет элемент с именем tagn, являющийся потомком
наследственной цепочки от root, tag1, tag2 до tagn-1, атрибут
attr1 тега tag2 имеет значение 5.

Установка XML Extender

DB2 XML Extender Version V7.1 требует для работы наличия DB2 Universal Database V6.1 или выше и доступен для платформ AIX, Sun Solaris, Linux, Windows NT и Windows 2000. DB2 XML Extender содержит следующие компоненты: XML Extender Server, клиент времени исполнения XML Extender, XML Extender SDK (набор средств для разработчика программного обеспечения), примеры и интерактивную документацию. Для установки DB2 XML Extender на платформе Windows NT выполните следующие действия:

  1. Загрузите DB2 XML Extender CD.
  2. Прочтите файл readme, находящийся в каталоге D:\db2xml\yourPlatform, где D:\ - это используемая для CD буква диска, а yourPlatform - ваша платформа (AIX, NT или Solaris).
  3. Для установки DB2 XML Extender на платформе Windows NT запустите файл setup.exe, расположенный в каталоге D:\db2xml\nt.
  4. Выберите желаемый язык установки.
  5. Выберите желаемый продукт для установки: DB2 XML Extender Server или DB2 XML Extender Client. Выберите XML Extender Server, если вы устанавливаете DB2 XML Extender на серверной платформе. В этом варианте установится также компонент XML Extender Client. Выберите XML Extender Client, если вы устанавливаете DB2 XML Extender на клиентском компьютере.
  6. Выберите один из трех типов установки: Typical, Compact или Custom (Рекомендуется Typical).
  7. Для места установки DB2 XML Extender оставьте значение по умолчанию C:\dxx, или выберите другой каталог.
  8. Для папки Program Folder оставьте значение по умолчанию DB2 XML Extender, или выберите другое название.
  9. После окончания установки выбранных компонентов перезапустите систему.

Проверка правильности установки

Для проверки правильности установки вы должны создать базу данных, соединить ее с XML Extender и CLI и запустить программу проверки установки.

  1. Создайте базу данных. Для этого можно использовать DB2 Control Center, команду CREATE DATABASE MYDB в окне Command Center или Command Line Processor, где MYDB - это название базы данных, которую вы хотите использовать для XML Extender.
  2. После создания базы данных создайте соединения с ней следующим образом:
    • В окне DB2 Command Window создайте соединение с базой данных при помощи команды: db2 connect to mydb.
    • Перейдите в подкаталог BND каталога с установленным XML Extender. Например, если вы установили XML Extender в C:\DXX, перейдите в каталог C:\DXX\BND при помощи команды cd /d C:\DXX\BND.
    • Соедините базу данных с XML Extender, выполнив команду db2 bind @dxxbind.lst.
    • Перейдите в подкаталог BND каталога с установленной DB2 при помощи команды cd /d %DB2PATH%\bnd.
    • Соедините базу данных с CLI при помощи команды db2 bind @db2cli.lst.
    • Отсоединитесь от базы данных при помощи команды db2 terminate.
  3. После создания соединений с базой данных перейдите обратно в основной каталог с установленным XML Extender, например C:\DXX, выполнив команду cd /d C:\DXX.
  4. Запустите на выполнение программу проверки установки dxxinstallchk.cmd при помощи команды <![CDATA[ dxxinstallchk mydb > out 2>&1 ]]> где mydb - это название вашей базы данных, а out - это название файла с результатом. Содержимое этого файла должно быть идентично содержимому контрольного файла dxxinstallchk.vfy.

Например, для пользователя xmlext и базы данных xmltest мы получим следующий файл:

DXXA002I Connecting to database xmltest.
DXXA005I Enabling database xmltest. Please wait.
DXXA006I The database xmltest was enabled successfully.
Database Connection Information.
Database server = DB2/NT 7.1.0
SQL authorization ID = XMLEXT
Local database alias = XMLTEST
DB20000I The SQL command completed successfully.
DB20000I The SQL command completed successfully.
DXXA002I Connecting to database xmltest.
DXXA000I Enabling column Order. Please Wait.
DXXA022I Column Order enabled.
DXXA002I Connecting to database xmltest.
DXXA008I Disabling column Order. Please Wait.
DXXA034I XML Extender has successfully disabled column Order.
DB20000I The SQL command completed successfully.
DXXA002I Connecting to database xmltest.
DXXA035I XML Extender is disabling database xmltest. Please wait.
DXXA036I XML Extender has successfully disabled database xmltest.
DB20000I The TERMINATE command completed successfully.

Разрешение работы базы данных с XML

Разрешение работы базе данных с XML является первым необходимым действием для сохранения XML-информации в базе данных. Это действие создает:

  • Схему db2xml (присваиваются также необходимые привилегии).
  • Пользовательские типы (UDT) XMLVARCHAR, XMLCLOB, XMLFILE и множество пользовательских функций (UDF).
  • Необходимые для DB2 XML Extender управляющие таблицы, например DTD_REF и XML_USAGE.

Вы можете разрешить работу базы данных с XML одним из следующих способов:

  • Командой для администрирования dxxadm с указанием различных параметров в зависимости от желаемого действия. Для разрешения базы данных команда выглядит так: dxxadm enable_db mydb, где mydb - название базы данных.
  • При помощи помощника Administration Wizard. Выберите Start -> Programs -> DB2 XML Extender -> XML Extender Administration Wizard.
  • Используя встроенные процедуры администрирования для вызова dxxEnableDB().

Метод XML-столбцов

При использовании метода XML-столбцов у вас есть полный набор возможностей для работы с XML-документом после сохранения документа: Вы можете извлечь или найти XML-элементы и атрибуты в XML-документе непосредственно, либо для повышения производительности вы можете сохранить наиболее часто употребляемые элементы и атрибуты во вспомогательных таблицах. Для расширения поисковых возможностей и выполнения операций структурированного и полнотекстового поиска в XML-документе можно использовать DB2 Text Extender. Вы можете обновлять содержимое XML-элемента или значение XML-атрибута.

XML-документ можно также извлекать и использовать в вашем XML-приложении. Использование метода XML-столбцов дает возможность сохранять XML-документ полностью в столбце. Выбор метода XML-столбцов оправдан при наличии следующих критериев:

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

Пример метода XML-столбцов

Рассмотрим пример, показывающий, как управлять данными о сотруднике.

Листинг 2. person.xml
<?xml version="1.0"?>
<!DOCTYPE person SYSTEM "c:\person.dtd">
	<person id="1">
           	<firstName>John</firstName>
           	<lastName>Smith</lastName>
            <country>US</country>
            <phone>
             <type>office</type>
             <number>12345678</number>
            </phone>
            <phone>
             <type>home</type>
             <number>34567890</number>
            </phone>
	</person>
Листинг 3. person.dtd
<?xml version="1.0"?> 
<!ELEMENT person (firstName,lastName,country,phone*)> 
<!ATTLIST person id CDATA #REQUIRED > 
<!ELEMENT firstName (#PCDATA )> 
<!ELEMENT lastName (#PCDATA )> 
<!ELEMENT country (#PCDATA )> 
<!ELEMENT phone (type,number)> 
<!ELEMENT type (#PCDATA )> 
<!ELEMENT number (#PCDATA )>

Нам необходим XML-столбец для хранения XML-файла. DB2 XML Extender предоставляет три новых пользовательских типа для сохранения XML-документов в виде данных столбца, находящихся в схеме db2xml:

  • XMLVarchar: Вы можете хранить XML-документ в базе данных, имеющий размер не более 3 Кб.
  • XMLCLOB: XML-документ также сохраняется в базе данных, но его максимальный размер может быть равен 2 Гб.
  • XMLFILE: Этот UDT позволяет хранить документ во внешнем файле.

Например, следующий SQL-оператор создаст таблицу person, содержащую один XML-столбец с типом XMLCLOB:

Листинг 4. Создание таблицы person
create table person(id integer not null primary key, 
 person db2xml.xmlclob notlogged);

Далее, зарегистрируйте ваш DTD-файл если планируете проверку сохраняемых XML-файлов на правильность составления. Необходимо зарегистрировать DTD в DB2 XML Extender. Для этого вы должны сохранить DTD-файл в таблице DTD_REF, созданной в схеме DB2XML при разрешении работы базы данных с XML, и назначьте этому файлу уникальный идентификатор: DTD ID. Есть две возможности вставить DTD в таблицу DTD_REF:

  • Используйте GUI XML Extender Administration Wizard.
  • Используйте SQL-оператор INSERT для вставки DTD-файла как данных с типом XMLCLOB в DTD_REF при помощи пользовательской функции XMLClobFromFile, предоставленной DB2 XML Extender. Например, если вы хотите вставить DTD person.dtd, расположенный в каталоге C:\TEMP, и назначить этому DTD-файлу уникальный идентификатор C:\TEMP\person.dtd, SQL-оператор будет выглядеть следующим образом:
Листинг 5. Вставка в таблицу person
insert into db2xml.dtd_ref(dtdid, content, usage_count, author, creator, updator) 
    values('C:\TEMP\person.dtd',db2xml.XMLClobFromFile
     ('C:\TEMP\person.dtd'),0, 'xmlext','xmlext','xmlext');

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

Листинг 6. DAD-файл для person
<?xml version="1.0"?>
<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
<DAD> 3
<dtdid>C:\TEMP\person.dtd</dtdid>
<validation>YES</validation>
<Xcolumn>
<table name="person_names">
	<column name="fname" type="varchar(50)" path="/person/firstName" 
	multi_occurrence="NO"/>
	<column name="lname" type="varchar(50)" path="/person/lastName" 
	multi_occurrence="NO"/>
</table>
<table name="person_phone_number">
	<column name="pnumber" type="varchar(20)" path="/person/phone/number" 
	multi_occurrence="YES"/>
</table>
<table name="person_phone_number">
	<column name="pnumber" type="varchar(20)" path="/person/phone/number" 
	multi_occurrence="YES"/>
</table>
<table name="person_phone_type"> 
	<column name="ptype" type="varchar(20)" path="/person/phone/type" 
	multi_occurrence="YES"/>
</table>
</Xcolumn>
</DAD>

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

Листинг 7. Разрешение столбца для проверки и вспомогательных таблиц
dxxadm enable_column xmltest person person c:\TEMP\personColumn.dad -r id

Приведем примеры SQL-команд для доступа к данным в XML-столбцах:

Листинг 8. INSERT
insert into person values(1,db2xml.xmlclobfromfile('c:\TEMP\person.xml'));
Листинг 9. EXTRACT при помощи вспомогательных таблиц
select pnumber from person_names t1, person_phone_number t2, 
  person_phone_type t3 where t1.id = t2.id and t1.id = t3.id 
  and t2.dxx_seqno = t3.dxx_seqno and t1.lname='Smith' and t3.ptype='office';
Листинг 10. EXTRACT без использования вспомогательных таблиц
select lname, fname from person1 t1, person_names t2 where t1.id = t2.id 
  and db2xml.extractVarchar(person, '/person/country') = 'US';
Листинг 11. UPDATE
update person set person = db2xml.XMLCLOBFromFile('c:\TEMP\personbis.xml');
Листинг 12. RETRIEVE
select db2xml.Content(person, 'c:\temp\retrievedperson.xml') from person where id = 1;

Метод XML-коллекций

Метод XML-коллекций предоставляет следующие возможности:

  • Вы можете заполнить столбцы одной или нескольких таблиц DB2 содержимым XML-документа. Теги XML-документа и сам XML-документ не сохраняется в DB2; сохраняются только интересующие вас элементы и атрибуты. Отображение между элементами и атрибутами XML-документа и таблицами DB2 определяется в DAD-файле.
  • Вы можете создать XML-документ, используя данные из столбцов одной или нескольких таблиц DB2. DB2 XML Extender компонует XML-документ, используя хранимые в столбцах таблиц DB2 данные. Опять же отображение между элементами и атрибутами XML-документа и таблицами DB2 определяется в DAD-файле.
  • Вы можете работать с разложенными (декомпонованными) из XML-документа данными так же, как и с любыми другими реляционными данными DB2.

Использование метода XML-коллекций предоставляет возможность отобразить структуру XML-документов в таблицы DB2, т.е. вы можете скомпоновать XML-документы из существующих данных DB2 или выполнить декомпозицию XML-документов в таблицы DB2. Используйте XML-коллекции в следующих ситуациях:

  • Ваши данные хранятся в существующих реляционных таблицах, и вы хотите компоновать XML-документы, основываясь на определенном DTD.
  • У вас есть XML-документы, которые надо сохранять вместе с наборами данных, хорошо отображающимися в реляционные таблицы.
  • Вы хотите создавать различные представления ваших реляционных данных, используя различные схемы отображения.
  • У вас есть XML-документы, полученные из других источников данных. Вы заинтересованы в данных, а не в тегах, и хотите сохранить в базе данных только данные. У вас есть возможность выбирать, хранить ли данные в существующих или в новых таблицах.
  • Небольшой набор ваших XML-документов требует частого обновления, и производительность этих обновлений является критичной.
  • Вам необходимо сохранять данные приходящих XML-документов целиком, но часто извлекать только некоторые из них.
  • Ваши XML-документы превышают по размеру 2Гб, и вы должны выполнить их декомпозицию.

Пример метода XML-коллекций

Начнем с двух таблиц и используем тот же DTD из рассмотренного выше примера XML-столбцов.

Листинг 13. SQL-команды для создания таблиц
    CREATE TABLE Customer(
    ID INTEGER NOT NULL PRIMARY KEY,
    Country VARCHAR(30),
    LName VARCHAR(30),
    FName VARCHAR(30))
    
    CREATE TABLE Customer_Details(
    ID INTEGER,
    Phone_Number VARCHAR(20),
    Phone_Type VARCHAR(20), 
    CONSTRAINT CUST_DETAIL_FK
FOREIGN KEY (ID) REFERENCES Customer (ID))

На листинге 14 приведен пример DAD-файла, использующего SQL Mapping. Обратите внимание на то, что при SQL-отображении возможно только извлечение данных:

Листинг 14. DAD-файла, использующий SQL Mapping
<?xml version="1.0"?>
<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
<DAD>
<validation>NO</validation>
<Xcollection>
<SQL_stmt>
SELECT c.ID,COUNTRY,LNAME,FNAME,p.PHONE_ID,PHONE_NUMBER,PHONE_TYPE from
CUSTOMER C, table (SELECT substr(char(timestamp(generate_unique())),16) as
PHONE_ID,ID,PHONE_NUMBER,PHONE_TYPE from customer_details) P where P.ID=C.ID
order by ID, PHONE_ID</SQL_stmt>
<prolog>?xml version="1.0"?</prolog>
<doctype>!DOCTYPE person SYSTEM "C:\dxx\samples\dtd\person.dtd"</doctype>
<root_node>
<element_node name ="person">
<attribute_node name="id">
<column name="ID"/>
</attribute_node>
<element_node name="firstName">
<text_node>
<column name="FName"/>
</text_node>
</element_node>
<element_node name="lastName">
<text_node>
<column name="LName"/>
</text_node>
</element_node>
<element_node name="phone" multi_occurrence="YES">
<element_node name="type">
<text_node>
<column name="Phone_Type"/>
</text_node>
</element_node>
<element_node name="number">
<text_node>
<column name="Phone_Number"/>
</text_node>
</element_node>
</element_node>
</element_node>
</root_node>
</Xcollection>
</DAD>

На листинге 15 показан пример DAD-файла, использующего RDB Mapping:

Листинг 15. DAD-файла, использующий RDB Mapping
<?xml version="1.0"?>
<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
<DAD>
<validation>NO</validation>
<Xcollection>
<prolog>?xml version="1.0"?</prolog>
<doctype>!DOCTYPE person SYSTEM "C:\dxx\samples\dtd\person.dtd"</doctype>
<root_node>
<element_node name ="person">
<RDB_node>
<table name="customer"/>
<table name="customer_details"/>
<condition>
customer.id=customer_details.ID
</condition>
</RDB_node>
<attribute_node name="id">
<RDB_node>
<table name="customer"/>
<column name="id"/>
</RDB_node>
</attribute_node>
<element_node name="firstName">
<text_node>
<RDB_node>
<table name="customer"/>
<column name="FName"/>
</RDB_node>
</text_node>
</element_node>
<element_node name="lastName">
<text_node>
<RDB_node>
<table name="customer"/>
<column name="LName"/>
</RDB_node>
</text_node>
</element_node>
<element_node name="phone" multi_occurrence="YES">
<element_node name="type">
<text_node>
<RDB_node>
<table name="customer_details"/>
<column name="Phone_Type"/>
</RDB_node>
</text_node>
</element_node>
<element_node name="number">
<text_node>
<RDB_node>
<table name="customer_details"/>
<column name="Phone_Number"/>
</RDB_node>
</text_node>
</element_node>
</element_node>
</element_node>
</root_node>
</Xcollection>
</DAD>

WebSphere Application Developer XML-инструментарий

WebSphere Application Developer XML-инструментарий включает в себя XML-перспективы и программы создания (авторинга) и генерирования. Приведем список этих инструментов.

XML-перспективы

Data-перспектива

  • Data-перспектива содержит различные средства для импорта и экспорта данных в виде XML из всех баз данных, имеющих JDBC-драйвер.

XML-перспектива

  • XML-перспектива содержит различные средства создания, редактирования и преобразования XML-файлов (XML, XML Schema, DTD, таблица стилей XSL и т.п.).

XSL Debug-перспектива

  • XSL Debug-перспектива дает возможность производить отладку XSL-преобразований в символьном отладчике.

Инструменты авторинга и генерирования

XML-редактор

  • XML-редактор - это средство для создания и просмотра XML-файлов. Вы можете использовать его для создания новых XML-файлов с нуля, из существующих DTD или существующих XML-схем. XML-редактор можно использовать также для редактирования XML-файлов, связывания их с DTD или схемами для проверки корректности.

DTD-редактор

  • DTD-редактор - это средство для создания и просмотра DTD. Используя DTD-редактор вы можете создавать DTD, генерировать файлы XML-схем, генерировать JavaBeans-компоненты. DTD-редактор можно использовать также для генерирования HTML-форм, основанных на создаваемых DTD.

Редактор для XML Schema

  • Редактор для XML Schema - это средство для создания, просмотра и проверки корректности XML-схем. Редактор для XML Schema можно использовать для выполнения таких задач как создание компонентов XML-схемы, импорта и просмотра XML-схем, генерирования DTD и описаний реляционной таблицы из XML-схемы, генерирования JavaBeans компонентов для создания XML-экземпляров XML-схемы.

XSL-редактор

  • XSL-редактор может использоваться для создания новых XSL-файлов или для редактирования существующих. Для помощи при создании или редактировании XSL-файла служат различные мастера и ассистент по содержимому. После окончания редактирования файла можно проверить его на корректность. Кроме того, вы можете назначить экземпляр XML-файла редактируемому исходному XSL-файлу и использовать его для предоставления редактирования с подсказкой при определении таких конструкций, как XPath-выражения.

Мастер XPath Expression

  • Вы можете использовать мастер XPath Expression для создания XPath-выражений. XPath-выражения могут применяться для поиска в XML-документах, извлечения информации из узлов (таких как элемент или атрибут).

XSL-инструменты

  • Вы можете использовать программы отладки и преобразования XSL для назначения XSL-файлов XML-файлам, преобразования их в новые XML, HTML или текстовые файлы. После преобразования XSL-перспектива позволяет вам визуально следить за пошаговым исполнением сценария XSL-преобразования с выделением правил преобразования во время их применения. Можно использовать представления в XSL Debug-перспективе для облегчения отладки XML или XSL-файлов.

Мастер SQL Query и SQL Builder

  • Вы можете использовать либо мастер SQL Query, либо SQL Builder для создания SQL-команд для XML-генерирования или для приложений баз данных.

Пользовательские функции

  • Вы можете создать и разместить пользовательские SQL-функции, которые могут быть использованы в SQL-командах.

Хранимые процедуры

  • Application Developer включает графический построитель хранимых процедур. Могут быть созданы и размещены хранимые процедуры Java и SQL.

Мастер XML и SQL Query

  • Вы можете использовать мастер XML и SQL Query для создания XML-файла из результата SQL-запроса или получения XML-файла и сохранения его в реляционной таблице. При создании XML-файла из SQL-запроса можно выбрать создание XML-схемы или DTD-файла, описывающих структуру XML-файла для использования в других приложениях. Поставляются также две библиотеки Java-классов, SQLToXML (sqltoxml.jar) и XMLToSQL (xmltosql.jar), которые можно использовать в приложениях во время исполнения. Эти JAR-файлы расположены в: WSAD_HOME_DIRECTORY\wstools\eclipse\plugins\com.ibm.etools.sqltoxml\jars.

Редактор отображения XML в XML

  • Редактор отображения XML в XML - это средство для отображения одного или нескольких XML-файлов в один целевой XML-файл. К отображению можно добавлять XPath-выражения, группировки, Java-методы или функции преобразования. Отображения могут также редактироваться, удаляться или сохраняться для дальнейшего использования. После определения отображения вы можете сгенерировать сценарий XSLT. Этот сценарий затем может применяться для комбинирования и преобразования любых XML-файлов, соответствующих исходным DTD.

Редактор отображения RDB в XML

  • Редактор отображения RDB в XML - это средство для определения отображения между одной или несколькими реляционными таблицами и XML-файлом. После создания отображения можно сгенерировать DAD-сценарий (описание доступа к документу), который может быть запущен DB2 XML Extender либо для компоновки XML-файлов из существующих данных DB2, либо для декомпозиции XML-файлов в данные DB2.

Мастер Web Service

  • Application Developer может также создавать Web-службы из SQL-команд и хранимых процедур. На первом шаге из SQL-команды или хранимой процедуры создается файл расширенного описания доступа к документу (DADX); на втором шаге из DADX-файла создается Web-служба.

Создание WORF Web Service в WebSphere Studio Application Developer

WORF-определение

WORF - это аббревиатура Web services object runtime framework (объектная среда времени исполнения Web-служб). WORF включена в WebSphere Studio и доступна также для загрузки как отдельный продукт в DB2. Она будет работать также с WebSphere Application Server AE. WORF предоставляет среду для создания основанных на XML Web-служб, обращающихся к DB2. WORF использует DADX-файл (Document Access Definition Extension), описывающий набор SQL-команд, которые могут быть вызваны через интернет.

В дополнение к SOAP-запросам WORF поддерживает обе операции: HTTP GET и POST. При запросе службы WORF загрузит указанный в запросе DADX-файл, выполнит соединение с DB2, запустит SQL-команду и подтвердит транзакцию в базе данных. Она будет форматировать результат в XML, преобразуя по необходимости типы данных и возвращая ответ на запрос.

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

Для создания нового J2EE Web-проекта с названием TestWORF выполните следующие действия.

  1. Выберите File -> New -> Project -> Web -> Dynamic Web Project.
  2. Нажмите Next.
  3. Введите имя проекта TestWORF.
  4. Нажмите Finish
Рисунок 1. Экран при создании Web-проекта
Экран при создании Web-проекта

Переключение на Data-перспективу

Переключите программу на Data-перспективу. Выберите Window->Open Perspective->Data.

Рисунок 2. Переключение на экран Data-перспективы
Переключение на экран Data-перспективы

Импорт схемы базы данных в Web-проект

Для импорта схемы базы данных в проект TestWORF выполните следующие действия:

  1. Нажмите правую кнопку мышки в окне DB Servers и выберите New Connection.
  2. Введите название базы данных SAMPLE, корректный User Id и Pasword и нажмите Finish.
  3. Разверните вновь созданный документ. Нажмите правую кнопку мышки на схеме и выберите Import to File.
  4. Выберите проект TestWORF из кнопки Button.
  5. Нажмите Finish и подождите завершения создания папки базы данных.
Рисунок 3. Экран установки нового соединения
Экран установки нового соединения
Рисунок 4. Импорт схемы данных в экран с папками
Импорт схемы данных в экран с папками

Создание SQL-команды

Создайте оператор SQL-запроса к базе данных для получения списка всех сотрудников компании.

  1. Переключитесь на представление Data Definition в верхнем левом углу.
  2. Разверните узел TestWORF -> WebContent -> WEB-INF -> databases -> SAMPLE -> Statements.
  3. Щелкните правой кнопкой мыши на папке Statements и выберите New -> Select Statement.
  4. Введите "Employees" в качестве названия команды.
  5. Нажмите OK.
  6. Для команды Employees должен открыться SQL Builder. Добавьте таблицу ADMIN.EMPLOYEE в команду, щелкнув правой кнопкой мыши в представлении Tables.
  7. Сохраните команду запроса.
  8. Выполните команду для проверки соответствия содержимого следующей таблице. Нажмите меню SQL в главном окне и выберите Execute.
Рисунок 5. Экран создания SQL-команды
Экран создания SQL-команды

Создание DADX Group

Теперь мы перейдем к созданию DADX web-службы, используя созданную нами SQL-команду. Сначала создайте новую конфигурацию DADX-группы. DADX-группа содержит соединение (JNDI и JDBC) и другую информацию, совместно используемую DADX-файлами группы.

  1. Выберите File -> New -> Other -> Web Services -> Web Service DADX Group Configuration.
  2. На следующей странице выделите проект TestWORF и нажмите кнопку Add Group. Введите "EmployeeGroup" в качестве названия группы.
  3. Разверните папку TestWORF и выделите EmployeeGroup.
  4. Нажмите кнопку Group Properties и измените DB URL на jdbc:db2:SAMPLE.
  5. Нажмите кнопки OK и Finish в мастере конфигурации DADX-группы.
Рисунок 6. Экран создания DADX-группы
Экран создания DADX-группы

Создание DADX-файла

Теперь создадим DADX-файл при помощи созданного ранее оператора SELECT.

  1. Выберите File -> New -> Other -> Web Services -> DADX File.
  2. Разверните папку TestWORF и найдите оператор Employees.
  3. Выберите оператор и дважды нажмите кнопку Next. Должно отобразиться диалоговое окно DADX Generation Dialog.
  4. Введите EmployeesList.dadx в качестве названия файла.
  5. Проверьте, что выходной папкой является /TestWORF/JavaSource/groups/EmplyeeGroup.
  6. Нажмите кнопку Finish.
Рисунок 7. Экран создания DADX-файла
Экран создания DADX-файла

Создание DADX Web-службы

Создадим DADX Web-службу.

  1. Выберите File -> New -> Other -> Web Services -> Web Service.
  2. На следующей странице выберите тип Web-службы - DADX Web Service.
  3. Убедитесь, что отмечен флажок Generate a Proxy. Типом прокси клиента является Java Proxy. Выберите Test the Generated Proxy и нажмите кнопку Next.
  4. В диалоговом окне Service Deployment Configuration проверьте, что в Service Web Project указан TestWORF и в Client Web Project указан TestWORFClient. Нажмите кнопку Next.
  5. В диалоговом окне Web Services Warning нажмите кнопку Ignore All.
  6. В диалоговом окне Web Service DADX File Selection проверьте, что выбран созданный вами DADX-файл. В данном случае это: /TestWORF/JavaSource/groups/EmplyeeGroup/EmployeesList.dadx. Нажмите кнопку Next.
  7. Проверьте что в диалоговом окне Web Service DADX Group properties Dialog в качестве DB URL указан jdbc:db2:SAMPLE. Нажмите кнопку Next.
  8. В диалоговом окне Web Service Binding Proxy Generation отметьте флажок Show mappings и нажмите Next.
  9. Выберите Show и используйте переключатель DOM Element mapping по умолчанию.
  10. Нажмите кнопку Finish.

Проверка DADX Web-службы

На данном этапе DADX Web-служба была создана и опубликована в WebSphere Test Environment. В web-браузере должна появиться тестовая страница TestClient.jsp:

  1. Нажмите ссылку Employees() Method.
  2. Нажмите кнопку Invoke.
  3. Должна обновиться панель Result и отобразиться XML-вывод команды запроса Employees.
Рисунок 8. Экран проверки DADX-службы
Экран проверки DADX-службы

Выводимая информация из DADX Web-службы

На рисунке 9 представлен результат запроса SELECT.

Рисунок 9. Экран с полученной информацией от DADX Web-службы.
Экран с полученной информацией от DADX Web-службы.

Размещение Web-служб DB2

Запуск Web-служб DB2 в WebSphere Application Server требует наличия среды времени исполнения Web Services Object Runtime Facility (WORF). Вкратце:

  1. Найдите файл dxxworf.zip в каталоге DB2_HOME_DIRECTORY\samples\java\Websphere, где DB2_HOME_DIRECTORY - это название каталога с установленной DB2.
  2. Разархивируйте dxxworf.zip в любой каталог.
  3. Скопируйте worf.jar из этого каталога в WAS_HOME_DIRECTORY\lib, где WAS_HOME_DIRECTORY - это каталог с установленным WebSphere Application Server.
  4. При помощи WAR экспортируйте ваш EAR, содержащий Web-службу, и установите в WAS.

Резюме

В данной статье были рассмотрены следующие темы:

  • DB2 XML Extender предоставляет инструментальные средства для простого импорта и экспорта XML-данных из базы данных DB2.
  • Для этого DB2 XML Extender предлягает два метода: XML-столбцы и XML-коллекции.
  • Для импорта и экспорта XML-данных из базы данных DB2 посредством Web-службы может использоваться WORF (Web Services Object Runtime Framework). Основанная на WORF Web-служба (при помощи DADX-файла) может использоваться для выполнения встроенной процедуры, а также CRUD-методов, запускающих SQL-команды непосредственно для вставки, изменения, удаления или запроса ваших данных.
  • Для сохранения или извлечения XML-документов из вашей базы данных DB2 можно также включить в WORF Web Service DADX-файл такие операции DB2 XML Extender как storeXML и retrieveXML.

Загрузка

ОписаниеИмяРазмер
zip fileWS_WORF.zip10 KB

Ресурсы

Комментарии

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=Information Management, WebSphere, SOA и web-сервисы
ArticleID=96485
ArticleTitle=DB2 XML Extender, WORF, и WebSphere Application Developer
publish-date=09232006