Технология XMLBeans позволяет работать с XML-структурой как с компонентами JavaBean. Использование такого инструментального средства как XMLBeans упрощает разработку SOA-приложений, уменьшая время разработки и тестирования служб, и увеличивая, таким образом, скорость предоставления служб.
В данной статье в качестве контейнера развертывания написанных вами компонентов XMLBeans используется Apache Geronimo (хотя вы можете использовать любой сервер). Здесь предполагается, что вы работали ранее с XML и знакомы с концепциями XML-схем, XQuery, XPath и т.п. Но не надо беспокоиться, если вы не являетесь экспертом, поскольку XMLBean скрывает сложность этих технологий.
XMLBeans были представлены компанией BEA как часть ее продукта WebLogic Workshop. В сентябре 2003 года BEA подарила Page Flow, XMLBeans и другие технологии сообществу разработчиков программ с открытым исходным кодом. Впоследствии эти два проекта получили название Apache Beehive и Apache XMLBeans.
Вы можете представлять XMLBeans как объектно-реляционное (object-relational - OR) средство отображения, но для XML-файлов, а не для реляционных баз данных. XMLBeans позволяет обращаться к XML-файлу так, как к любому Java-объекту или компоненту JavaBean. Другими словами, это инструмент связывания XML-Java.
Castor и Java Architecture for XML Binding (JAXB) - это еще две широко известные технологии, выполняющие аналогичное связывание XML-Java. Castor - это интересная технология: кроме связывания данных XML-Java он обеспечивает связывание Java-SQL как обычное OR-средство отображения. Castor поддерживает также возможность самодиагностики во время исполнения; он пытается найти соответствие элементов и атрибутов XML классам и полям класса Java. JAXB - это технология фирмы Sun, предоставляющая некоторые базовые возможности.
Прежде при работе с OR-программой вы, вероятнее всего, не думали, что она могла бы представлять ваши объекты в XML. Сегодня, с распространением SOA, это стало важным критерием для таких программ. Хотя технология XMLBeans является новейшей, она, вероятнее всего, наиболее совершенна среди технологий связывания XML-Java. Практика показывает, что ее легче всего использовать и что она предлагает лучший набор возможностей и лучшую производительность. Подробное сравнение технологий связывания XML-Java выходит за рамки данной статьи.
На рисунке 1 изображена работа XMLBean. За кулисами процесса XML-файл всегда сохраняется в синхронизации с представлением компонента. Если у вас есть файл, соответствующий какой-либо XML-схеме, вы можете работать с ним, используя методы getters и setters так же, как вы делали бы это в JavaBean. XML-документы представляются как настоящие объекты данных (означая, что они могут использоваться без ограничений), доступ к которым осуществляется в стиле JavaBean.
Рисунок 1. Связывание XML-Java
Вот пример. Предположим, что у вас есть XML-схема и соответствующий XML-файл, представляющий собой книгу. Этот файл содержит элемент Author, имеющий отношение с книгой один-ко-многим. Книга может иметь несколько авторов, как показано в листинге 1.
Листинг 1. XML-файл для объекта book
<mybook>
<title>Pro Apache Beehive</title>
<authors>
<author>Kunal Mittal</author>
<author>Srinivas Kanchanvally</author>
</authors>
<isbn>1590595157</isbn>
</mybook>
|
При работе с этим файлом с использованием XMLBeans это отношение поддерживают соответствующие Java-классы. В листинге 2 показан некоторый псевдокод Java для работы с XMLBean, который исходит из этого XML-файла.
Листинг 2. Псевдокод Java для работы с XMLBean
MyBook doc = MyBook.Factory.newInstance();
Book book = doc.addNewBook();
book.setTitle("Pro Apache Beehive");
book.setIsbn("1590595157");
String[] authors = new String[2];
authors[0] = new String("Kunal Mittal");
authors[1] = new String("Srinivas Kanchanavally");
book.setAuthors(authors);
|
XMLBeans и разработка SOA-приложений
Легко экстраполировать взаимосвязь XMLBeans и разработки SOA-приложений. XML является сердцем большинства SOA-технологий, независимо от того, используют они Web-службы или нет. Даже если вы считаете SOA эквивалентом Web-служб (что сегодня особенно верно, если не углубляться в детали), как разработчику SOA-проекта, вам, несомненно, придется работать с XML. Возможно, вы имеете практический опыт использования синтаксических XML-анализаторов (XML parser) для управления XML-содержимым и последующего преобразования XML-файла в объектную структуру для более удобной работы. Возможно, вы анализировали XML и искали конкретные данные в этих файлах. А может быть, вы преобразовывали одну XML-структуру в другую. XMLBeans решает эти проблемы в мире SOA: она делает за вас трудную работу, для того чтобы вы могли сконцентрироваться на написании Web-служб или других SOA-служб.
Работая с SOA или Web-службами, вы не пишете сервер приложений или XML-анализатор. Вместо этого вы используете различные инструменты, написанные производителем программного обеспечения или предоставленные в открытых исходных кодах, которые широко распространены, протестированы и имеют свой собственный жизненный цикл. Зачем вам писать код для преобразования XML в Java-объекты? Использование XMLBeans помогает уменьшить время разработки и тестирования ваших служб, повышая скорость предоставления служб.
Работа с XMLBeans в Apache Geronimo
Как указывалось выше, в данной статье используется Apache Geronimo в качестве контейнера развертывания в примерах. В этом разделе вы напишете простой XMLBean и развернете его в Geronimo.
Для начала вам необходима XML-схема. Вы можете начать работать с XML-схемой, либо сгенерировать ее. Это легко можно сделать при помощи нескольких XML-программ, например, XMLSpy и <oXygen/> XML. Можно также сгенерировать XML-схему в интерактивном режиме на сайте генерирования XMLBeans-схем (ссылка на него приведена в разделе "Ресурсы").
Пример XML-файла приведен в листинге 3. В этой статье не предоставляется какой-либо исходный код примеров. Вы должны взять XML-файл, с которым работали раньше, и сгенерировать схему, а затем из нее - XMLBean. Это позволит вам увидеть XMLBeans в действии.
Листинг 3. XML-пример
<?xml version="1.0" encoding="UTF-8"?>
<bookDetail xmlns="http://beehive.apress.com/bookstore/vo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://beehive.apress.com/bookstore/vo
file:/C:/ /code/chapter8/bookdetails.xsd">
<book_Id>1</book_Id>
<title>Pro Apache Beehive</title>
<book_type>Book</book_type>
<author>Kunal Mittal, Srinivas Kanchanvally</author>
<publication>Apress</publication>
<publication_Date>2005-08-31</publication_Date>
<catalogNo>123</catalogNo>
<isbn>1590595157</isbn>
<price>49.99</price>
<comments>The 1st book on Apache Beehive</comments>
<pages>300</pages>
<available>false</available>
</bookDetail> |
Вы можете также сгенерировать XMLBeans непосредственно на Web-сайте XMLBeans - вам не нужно ничего загружать или запускать какие-либо программы. Для этого зайдите на Web-сайт XMLBeans Schema Validator (ссылка приведена в разделе "Ресурсы") и идите по ссылкам. На рисунке 2 изображена копия экрана. В качестве альтернативы вы можете загрузить дистрибутив XMLBeans; он содержит программу командной строки и задание Ant, которые могут генерировать XMLBean за вас.
Рисунок 2. Web-сайт проверки корректности XML-схем
После генерирования XMLBeans у вас будут иметься JAR-файлы (Java Archive), содержащие весь необходимый код. Вы должны загрузить исполняемые JAR-файлы XMLBean с Web-сайта Apache XMLBeans (ссылка приведена в разделе "Ресурсы") и разрешить вашему контейнеру (в данном случае Apache Geronimo) работать с созданными вами XMLBeans.
Если вы еще этого не сделали, загрузите и установите Apache Geronimo (ссылка на страницу загрузки приведена в разделе "Ресурсы"). Предположим, что вы установили Apache Geronimo в c:\java\geronimo-1.0 и XMLBeans в c:\java\xmlbeans-2.1.0. В оставшейся части статьи эти каталоги будут называться GERONIMO_HOME и XMLBEANS_HOME. Если вы используете другую структуру каталогов, измените названия этих каталогов соответствующим образом.
Хотя для XMLBeans не требуется сервер приложений, вы можете использовать XMLBeans с J2EE-приложениями (Java 2 Platform, Enterprise Edition), развернутыми на любом сервере приложений, включая Geronimo. В данной статье рассматриваются высокоуровневые концепции и некоторый псевдокод, демонстрирующий, как это сделать. Однако для наилучшего результата вы должны использовать реальные файлы.
Настройка вашего J2EE-приложения
Предположим, что вы создаете простое приложение для обмена информацией о книгах с библиотекой или Amazon.com через Web-службы. Классический сценарий предполагает, что вы пытаетесь использовать Web-службу Amazon. Вы можете попробовать один из сценариев, упомянутых в данной статье, либо использовать созданный вами XMLBean при помощи описанных выше шагов.
Прежде всего, скопируйте .jar-файлы в каталог XMLBEANS_HOME\lib вашего EAR-файла (Enterprise Archive). В зависимости от того, как и где вы планируете использовать XMLBean, возможно, вам понадобиться поместить эти файлы в APP-INF/lib или WEB-INF/lib. Вы даже можете поместить их в ваш каталог GERONIMO_HOME\lib и сделать их доступными для любого J2EE-приложения, развернутого на данном экземпляре сервера.
Затем, разверните ваше J2EE-приложение в Apache Geronimo, как объясняется в статье "Развертывание J2EE-приложений в Apache Geronimo" (developerWorks, январь 2006). Теперь вы готовы использовать возможности XMLBeans.
Поместите .jar-файл, созданный вами для XMLBean (используя программу, предоставляемую как часть дистрибутива XMLBeans, или Web-сайт XMLBeans), либо в каталог APP-INF/lib, либо в WEB-INF/lib. Теперь, все что осталось сделать - написать код для XMLBean. Для данного примера вы напишете простую JSP-страницу (JavaServer Page), содержащую некоторый Java-код для работы с XMLBean.
Написание кода для работы с XMLBean
Код, приведенный в листинге 2, позволяет вам создать новые XML-документы; он использует базовые JavaBean-методы getters и setters для создания XML-документа при помощи XMLBean. В листинге 4 приведен код, позволяющий импортировать XML-файл в XMLBean.
Листинг 4. Чтение XML-файла в XMLBean
BookDocument book = null; try { book =
BookDocument.Factory.parse(pathtobookxmlfile); } catch (XmlException e) {
e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } |
Попробуйте этот код в JSP и разверните JSP-страницу в Geronimo для просмотра результатов.
В статье "Развертывание Web-служб в Apache Geronimo" (developerWorks, апрель 2005) рассматривается, как использовать Web-службы Amazon и работать с ними в Apache Geronimo. В качестве упражнения вы можете изменить данную методику работы с XMLBeans.
В этой краткой, но практической статье вы узнали об основах технологии XMLBeans и способах работы с ней. Вы также выполнили элементарные действия по работе с XMLBeans в Apache Geronimo. Эти действия не отличаются и при использовании XMLBeans в IBM® WebSphere® Application Server, Apache Tomcat, JBoss или BEA WebLogic. Рассмотренные в данной статье темы применимы и для этих продуктов.
В данной статье также объясняется, почему XMLBeans может сократить время работы над SOA-проектами. Это передовая технология связывания Java-XML с точки зрения функциональных возможностей, гибкости и, самое важное, производительности.
Научиться
- В статьях "Развертывание J2EE-приложений в Apache Geronimo" (developerWorks, январь 2006) и "Развертывание Web-служб в Apache Geronimo" (developerWorks, апрель 2005) рассматривается работа с J2EE-приложениями в Apache Geronimo.
- В статье "Слухи о Apache Beehive" (developerWorks, апрель 2005) приведен обзор проекта Apache Beehive.
- В книге "
Pro Apache Beehive
" подробно описывается технология XMLBeans.
- В разделе Open source на developerWorks Россия приведена исчерпывающая информации how-to, инструментальные средства и обновления проектов, помогающих при работе с технологиями с открытым исходным кодом и использовании их с продуктами IBM.
- В области проекта developerWorks Apache Geronimo приведены статьи, руководства и другие ресурсы, помогающие вам начать разработку с Geronimo.
-
Служба поддержки IBM для Apache Geronimo, позволяющая разрабатывать Geronimo-приложения, используя широко известную IBM-поддержку.
- Полезные ресурсы для новичков и опытных пользователей приведены в разделе "Начало работы с Apache Geronimo" на сайте developerWorks.
- В зоне открытых исходных кодов на сайте developerWorks размещены статьи по Apache, а также бесплатные руководства по Apache.
- В данных и других технических темах книжного каталога Safari можно найти множество книг.
Получить продукты и технологии
- Оригинал статьи "Deploy SOA applications in Apache Geronimo using XMLBeans".
- Загрузите Apache Geronimo.
- Загрузите Apache XMLBeans.
-
Создайте XML-схему на сайте генерирования XMLBeans-схем.
-
Сгенерируйте XMLBeans на сайте XMLBeans Schema Validator.
- Используйте в вашем следующем проекте с открытым исходным кодом пробное программное обеспечение IBM, доступное для загрузки или на DVD.
- Загрузите бесплатную копию IBM WebSphere® Application Server Community Edition V1.0 - облегченного сервера J2EE-приложений, созданного на базе технологии с открытым исходным кодом Apache Geronimo, предназначенной для ускорения разработки и развертывания.
Обсудить
- Примите участие в обсуждении материала на форуме.
- Следите за разработками Geronimo в блогах Apache Geronimo.
- Подключайтесь к сообществу developerWorks, участвуя в блогах developerWorks.

Кунал Миттал (Kunal Mittal) является консультантом, специализирующимся в Java-технологии, а также технологиях J2EE и Web-служб. Он соавтор нескольких книг по данным темам. Работает директором группы Domestic TV IT в Sony Pictures Entertainment, где отвечает за техническую архитектуру и управление приложениями. Более подробная информация приведена на его Web-сайте.