corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Привязка 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.

Схема, показывающая процесс JAXB для доступа к или создания XML в приложениях java

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

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

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

Содержание

Содержимое этой страницы относится к среде IDE NetBeans 6.7 и более поздних версий

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

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

Серверы Tomcat и GlassFish могут быть установлены при помощи дистрибутива "Web и Java EE" среды IDE NetBeans. Также можно воспользоваться страницей загрузок 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 5. Однако для мастера JAXB релевантны только перечисленные ниже параметры, для которых можно установить флажки в мастере:
      • nv. Строгая проверка достоверности входных схем не выполняется. По умолчанию перед обработкой выполняется строгая проверка достоверности исходной схемы. Это не означает, что во время привязки компилятор не выполняет никакой проверки достоверности; это просто означает, что производится менее строгая проверка.
      • readOnly. При установке этого флажка компилятор будет отмечать создаваемые исходные файлы Java как предназначенные только для чтения. По умолчанию компилятор не защищает создаваемые исходные файлы Java от записи.
      • npa. Подавляет создание аннотаций на уровне пакета в **/package-info.java. Установка этого флажка приводит к тому, что создаваемый код встраивает эти аннотации в другие создаваемые классы.
      • verbose. Используется для вывода наиболее подробных данных компилятора, например сведений о ходе выполнения и предупреждения.
      • quiet.Подавляет вывод данных компилятора, например сведений о ходе выполнения и предупреждений.
    • Использовать расширение. По умолчанию компилятор строго придерживается правил, указанных в главе "Совместимость" спецификации 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: снова откроется диалоговое окно мастера, в котором можно изменить параметры настройки, заданные ранее.
    Контекстное меню узла CreditReport c командой "Изменить параметры 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. Запустите приложение (щелкните правой кнопкой мыши узел проекта и выберите команду "Выполнить"). В окне "Вывод" отображается следующее:
    Вывод отчета клиента


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

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

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