Привязка WSDL к Java с помощью JAXB.

Архитектура Java для интерфейса API привязки XML (JAXB) упрощает процедуру доступа к документам XML из приложений, написанных на языке программирования Java. JAXB является альтернативой использованию синтаксического анализатора SAX или DOM для доступа к данным в документе XML. При доступе в документу XML с помощью JAXB сначала выполняется привязка схемы документа XML к набору классов Java, представляющих эту схему. Затем выполняется распаковка документа XML. При распаковке документа создается дерево объектов содержимого, представляющее содержимое и организацию документа.

Можно также использовать JAXB для построения документа XML. Чтобы собрать документ XML с помощью JAXB, сначала необходимо выполнить привязку схемы этого документа XML. После этого создается дерево содержимого. Наконец, выполняется упаковка дерева содержимого в документ XML.

На следующей схеме из раздела Интерфейс API архитектуры Java для привязки XML показан процесс доступа к документам XML и сборки документов XML в приложениях Java.

Диаграмма, на которой показывается процесс получения доступа или создания XML с поомщью java в JAXB

В этом учебном курсе описывается поддержка инструментов IDE NetBeans для JAXB. В частности, речь пойдет о следующих трех вопросах.

  • Использование мастера в среде IDE для привязки схемы документа XML и его распаковки в набор классов Java, представляющих эту схему.
  • Использование созданного JAXB класса в программном коде.
  • Упаковка кода Java в схему XML.

Для получения более подробных сведений об архитектуре JAXB, а также о JAXB в целом ознакомьтесь с разделами Глава 2: привязка схемы XML к классам Java и Глава 3: использование JAXB в учебном курсе по веб-службам Java.

Содержание

Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3 и 7.4

Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.

Программное обеспечение или материал Требуемая версия
IDE NetBeans Пакетная загрузка Java EE
Комплект для разработчика на языке Java (JDK) версия 7 или 6
В данном учебном курсе используется файл WSDL CreditReportSimple.wsdl

Можно установить и сервер Tomcat, и GlassFish, при распространении IDE NetBeans через Интернет и с помощью Java EE. Также можно воспользоваться страницей загрузок GlassFish Server или страницей загрузок Apache Tomcat.

Создание объектов Java на основе документов XML

Целью этого упражнения является создание проекта, а также создание объектов Java на основе документа XML.

  1. Загрузите файл CreditReportSimple.wsdl и сохраните его в любой папке.
  2. Выберите команду "Файл" > "Новый проект". В области "Категории" выберите "Java". В области "Проекты" выберите "Веб-приложение" и нажмите кнопку "Далее".
  3. Введите в поле "Имя проекта" текст JseSimpleClientReport и нажмите кнопку "Готово". В окне 'Проекты' отобразится проект JseSimpleClientReport.
  4. В окне 'Проекты' щелкните правой кнопкой мыши узел JseSimpleClientReport и выберите 'Создать' > 'Другие' > XML > 'Привязка JAXB'. Затем нажмите кнопку "Дальше". Появится мастер создания привязки JAXB.
    Мастер JAXB

    Параметры настройки мастера, представленные выше, служат следующим целям:

    • Имя привязки. Указывается имя новой привязки JAXB, которое будет использоваться для ее идентификации.
    • Проект. Отображается имя текущего проекта.
    • Файл схемы. Рабочий файл, который можетбыть доступен локально или в интерактивном режиме.
    • Тип схемы. Поддерживаются следующие языки схемы XML.
      • Схема XML
      • Relax NG – простой язык схемы XML. Синтаксис XML
      • Relax NG Compact – простой язык схемы XML. Синтаксис не типа XML
      • XML DTD – альтернатива схеме XML предыдущего поколения
      • WSDLязык определения веб-служб. Язык схемы XML для определения веб-служб на основе SOAP.
    • Имя пакета. Указывается пакет. в котором будут созданы объекты Java.
    • Параметры компилятора. В компиляторе доступно множество параметров, как описано в этом разделе практического руководства по Java EE 7. Однако для мастера JAXB релевантны только перечисленные ниже параметры, для которых можно установить флажки в мастере:
      • nv. Не выполняйте строгую проверку достоверности схемы ввода. По умолчанию перед обработкой выполняется строгая проверка достоверности исходной схемы. Это не означает, что во время привязки компилятор не выполняет никакой проверки достоверности; это просто означает, что производится менее строгая проверка.
      • readOnly. Принудительно с помощью компилятора присвойте пометку 'только для чтения' для созданных ресурсов Java. По умолчанию компилятор не защищает создаваемые исходные файлы Java от записи.
      • npa. Подавляется создание аннотаций уровня пакета в **/package-info.java. Установка этого флажка приводит к тому, что создаваемый код встраивает эти аннотации в другие создаваемые классы.
      • подробный. Получения максимального результата компилятора, такого как сведения о ходе выполнения и предупреждения.
      • тихий. Подавление результатов компилятора, таких как сведения о ходе выполнения и предупреждения.
    • Использование расширения. По умолчанию компиляторы строго принудительно реализуют правила, описанные в главе 'Совместимость' спецификации по JAXB. В стандартном (строгом) режиме также существуют ограничения на использование только тех настроек привязки, которые определены в спецификации. При выборе этого параметра разрешается использовать расширения JAXB Vendor Extensions.
    • Использовать файл привязки. Позволяет импортировать и редактировать один или несколько файлов настройки привязки JAXB.
    • Использовать файл каталога. Позволяет импортировать и редактировать файлы каталога OASIS.
  5. Введите текст CreditReport в поле "Имя привязки".
  6. Установите в области "Файл схемы" флажок "Выбрать из локальной файловой системы". Нажмите кнопку "Обзор" и перейдите к файлу WSDL, который был загружен ранее при изучении данного руководства.
  7. Разверните раскрывающийся список в области "Тип схемы" и выберите "WSDL" (если этот параметр не был выбран автоматически).

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

  8. В поле "Имя пакета" введите org.netbeans.j2ee.wsdl.creditreport. На экране должны быть представлены следующие параметры: Заполненный мастер JAXB
  9. Нажмите кнопку "Завершить".

В среде IDE будут созданы объекты Java на основе указанного документа XML. В следующем разделе будут изучены объекты Java в среде IDE.

Просмотр выходных данных мастера JAXB

Назначение этого упражнения заключается в ознакомлении с инструментами в IDE NetBeans, предназначенными для работы с выходными данными мастера JAXB.

  1. Как и другие артефакты, которые восстанавливаются средой IDE при каждой сборке проекта, объекты Java создаются в папке build. Откройте окно "Файлы" и перейдите к папке созданных объектов Java. Эти объекты Java также отображаются в окне "Проекты" под узлом "Созданные исходные файлы".
    В представлениях 'Проекты' и 'Файлы' отображаются созданные объекты Java
  2. Кроме того, в окне "Проекты" отображается новый узел, содержащий файл WSDL, как показано ниже. Обратите внимание, что если щелкнуть правой кнопкой мыши узел CreditReport, после чего мастер будет открыт повторно и можно будет изменить настройки, заданные ранее.
    Контекстное меню кредитной истории, в которой отображается параметр 'Изменить параметры JAXB'
  3. Если настройки в мастере были изменены, можно снова создать объекты Java, как описывается ниже:
    Контекстное меню привязки JAXB, в которой отображается параметр 'Восстановить код Java'

  4. Щелкните правой кнопкой мыши файл WSDL и выберите пункт "Открыть". В редакторе откроется документ.

После создания в среде IDE объектов для документа XML можно воспользоваться некоторыми из описываемых средств для обработки созданных объектов Java.

Упаковка кода Java в схему XML

Целью этого упражнения является обработка файлов и кода, созданных в среде IDE. Необходимо указать некоторые значения в одном из созданных объектов Java и затем упаковать этот объект в документ схемы XML, отображаемый в окне вывода среды IDE.

  1. Откройте главный класс, созданный мастером создания приложений Java. По умолчанию это класс с именем, идентичным имени проекта JseSimpleClientReport.java. Объявите в теле метода main класс CreditReport, который является одним из созданных корневых классов JAXB:
    public static void main(String[] args) {
    CreditReport cr = new CreditReport();
    }
  2. Появится значок предупреждения. Наведите на него курсор мыши: появится всплывающая подсказка с сообщением о невозможности найти класс CreditReport в среде IDE. Щелкните значок предупреждения левой кнопкой мыши и выберите команду добавления оператора импорта в среде IDE.
  3. Введите в тело метода main текст "cr". Среда IDE предоставляет функцию автозавершения кода для артефактов JAXB (в некоторых системах потребуется нажать сочетание клавиш CTRL+ПРОБЕЛ):
    Параметры автозавершения кода
  4. Установите некоторые значения для класса JAXB, например те, которые перечислены ниже (добавьте оператор импорта для java.math.BigInteger):
        cr.setFirstName("Butros Butros");
    cr.setLastName("Gali");
    cr.setDob("1930/05/30");
    cr.setScore("900");
    cr.setSsn("123-45-6789");

    cr.setLatestAddress1("2500 Some Ave");
    cr.setLatestAddress2("Suite 5000");
    cr.setCity("New York");
    cr.setState("New York");
    cr.setCountry("USA");
    cr.setPostalCode("NY 12345-6789");

    cr.setCurrency("USD");
    cr.setLiability(BigInteger.valueOf(2000000));
    cr.setLiquidAssests(BigInteger.valueOf(3000000));
    cr.setImmovableAssests(BigInteger.valueOf(5000000));
  5. Введите в тело метода main текст "jaxbm" под добавленными значениями. Это сочетание букв обозначает "Упаковка JAXB". На экране должны быть представлены следующие параметры:
    Фрагмент в редакторе, отображающий красный подчеркнутый jaxbm

    Появится красное подчеркивание, поскольку введенные символы не представляют собой слово, относящееся к языку программирования Java. Эти символы составляют шаблон кода NetBeans, используемый в следующем действии.

    Среда NetBeans также предоставляет шаблон кода для распаковки JAXB. Сокращенно – "jaxbu".

  6. Нажмите клавишу TAB.

    Символы "jaxbm" будут развернуты, и появится фрагмент кода:

    try {
    javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());
    javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
    marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
    marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    marshaller.marshal(cr, System.out);
    } catch (javax.xml.bind.JAXBException ex) {
    // XXXTODO Handle exception
    java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
    }

    Внимание! Расширение шаблона кода очень сильно зависит от конкретных условий. Нельзя нажать клавишу пробела, а затем – клавишу TAB или опечататься, исправить ошибку и нажать клавишу TAB и т.п. Необходимо правильно ввести фразу и нажать клавишу TAB. При возникновении опечатки удалите введенную фразу и введите ее заново.

  7. Запустите приложение (щелкните правой кнопкой мыши узел проекта и выберите команду "Выполнить"). В окне "Вывод" отображается следующее:
    Последовательные выходные данные демонстрации


Дополнительные сведения

Дополнительные сведения об использовании IDE NetBeans для разработки приложений Java EE см. следующие ресурсы:

Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans присоединяйтесь к списку рассылки .

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2015, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo