| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html><head> |
| |
| |
| <link rel="stylesheet" href="../../../print.css" type="text/css" media="print"><title>Привязка WSDL к Java с помощью JAXB - IDE NetBeans</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION, WEB SERVICE, WEB SERVICES, SOAP, METRO, WSDL, JAVA, JAXB, JAX-WS"> |
| |
| <meta name="description" content="This tutorial shows how to use NetBeans IDE 7.0-7.4 |
| to work with Java Architecture for XML Binding (JAXB) to generate Java classes based on XML documents."> |
| <link rel="stylesheet" href="../../../netbeans.css"></head><body> |
| <h1>Привязка WSDL к Java с помощью JAXB.</h1> |
| |
| <p><a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html" target="_blank">Архитектура Java для интерфейса API привязки XML</a> (JAXB) упрощает процедуру доступа к документам XML из приложений, написанных на языке программирования Java. JAXB является альтернативой использованию синтаксического анализатора SAX или DOM для доступа к данным в документе XML. При доступе в документу XML с помощью JAXB сначала выполняется <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#binsch" target="_blank"> <em>привязка</em> схемы</a> документа XML к набору классов Java, представляющих эту схему. Затем выполняется <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#unmars" target="_blank"> <em>распаковка</em> документа XML</a>. При распаковке документа создается дерево объектов содержимого, представляющее содержимое и организацию документа.</p> |
| <p>Можно также использовать JAXB для построения документа XML. Чтобы собрать документ XML с помощью JAXB, сначала необходимо выполнить <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#binsch2" target="_blank">привязку схемы</a> этого документа XML. После этого <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#crtree" target="_blank"> создается дерево содержимого</a>. Наконец, выполняется <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#mars"> <em>упаковка</em> дерева содержимого</a> в документ XML.</p> |
| <p>На следующей схеме из раздела <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html" target="_blank">Интерфейс API архитектуры Java для привязки XML</a> показан процесс доступа к документам XML и сборки документов XML в приложениях Java.</p> |
| <p><img alt="Диаграмма, на которой показывается процесс получения доступа или создания XML с поомщью java в JAXB" src="../../../images_www/articles/72/websvc/jaxb/xml_schema_fig1.PNG" style="width: 450px; height: 300px;"><br> |
| </p> |
| |
| <p>В этом учебном курсе описывается поддержка инструментов IDE NetBeans для JAXB. В частности, речь пойдет о следующих трех вопросах. </p> |
| <ul> |
| |
| <li>Использование мастера в среде IDE для привязки схемы документа XML и его распаковки в набор классов Java, представляющих эту схему. </li> |
| <li>Использование созданного JAXB класса в программном коде.</li> |
| <li>Упаковка кода Java в схему XML. </li> |
| </ul> |
| |
| <p>Для получения более подробных сведений об архитектуре JAXB, а также о JAXB в целом ознакомьтесь с разделами <a href="http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBWorks.html#wp100322" target="_blank">Глава 2: привязка схемы XML к классам Java</a> и <a href="http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing.html#wp78319" target="_blank">Глава 3: использование JAXB</a> в <a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/" target="_blank">учебном курсе по веб-службам Java</a>. </p> |
| |
| <p><b>Содержание</b></p> |
| |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3 и 7.4" class="stamp" src="../../../images_www/articles/72/netbeans-stamp-74-73-72.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3 и 7.4"> |
| <ul> |
| |
| <li><a href="#Exercise_1">Создание объектов Java на основе документов XML</a></li> |
| <li><a href="#Exercise_2"> Просмотр выходных данных мастера JAXB</a></li> |
| <li><a href="#Exercise_3">Упаковка кода Java в схему XML </a></li> |
| </ul> |
| |
| <p><b>Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.</b></p> |
| |
| <table> |
| |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Программное обеспечение или материал</th> |
| <th class="tblheader" scope="col">Требуемая версия</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.netbeans.org/downloads/index.html">IDE NetBeans</a></td> |
| <td class="tbltd1"> Пакетная загрузка Java EE </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Комплект для разработчика на языке Java (JDK)</a> </td> |
| <td class="tbltd1">версия 7 или 6</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">В данном учебном курсе используется файл WSDL</td> |
| <td><a href="http://www.netbeans.org/files/documents/4/2518/CreditReportSimple.wsdl">CreditReportSimple.wsdl</a></td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <p class="notes">Можно установить и сервер Tomcat, и GlassFish, при распространении IDE NetBeans через Интернет и с помощью Java EE. Также можно воспользоваться <a href="https://glassfish.java.net/download.html">страницей загрузок GlassFish Server</a> или <a href="http://tomcat.apache.org/download-60.cgi">страницей загрузок Apache Tomcat</a>.</p> |
| |
| <!-- ===================================================================================== --> |
| <h2><a name="Exercise_1"></a><!--Exercise 1: --> Создание объектов Java на основе документов XML</h2> |
| |
| <p>Целью этого упражнения является создание проекта, а также создание объектов Java на основе документа XML.</p> |
| |
| <ol> |
| |
| <li>Загрузите файл <a href="http://www.netbeans.org/files/documents/4/2518/CreditReportSimple.wsdl" target="_blank">CreditReportSimple.wsdl</a> и сохраните его в любой папке.<br> |
| </li> |
| <li>Выберите команду "Файл" > "Новый проект". В области "Категории" выберите "Java". В области "Проекты" выберите "Веб-приложение" и нажмите кнопку "Далее".</li> |
| <li>Введите в поле "Имя проекта" текст <tt>JseSimpleClientReport</tt> и нажмите кнопку "Готово". В окне 'Проекты' отобразится проект JseSimpleClientReport.</li> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши узел <tt>JseSimpleClientReport</tt> и выберите 'Создать' > 'Другие' > XML > 'Привязка JAXB'. Затем нажмите кнопку "Дальше". Появится мастер создания привязки JAXB. <br> <img alt="Мастер JAXB" border="1" class="margin-around" height="519" src="../../../images_www/articles/72/websvc/jaxb/jaxb-wiz-1.png" width="600"> |
| <p>Параметры настройки мастера, представленные выше, служат следующим целям:</p> |
| <ul> |
| <li><b>Имя привязки.</b> Указывается имя новой привязки JAXB, которое будет использоваться для ее идентификации.</li> |
| <li><b>Проект.</b> Отображается имя текущего проекта.</li> |
| <li><b>Файл схемы.</b> Рабочий файл, который можетбыть доступен локально или в интерактивном режиме.</li> |
| <li><b>Тип схемы.</b> Поддерживаются следующие языки схемы XML. |
| <ul> |
| <li><a href="http://www.w3.org/XML/Schema" target="_blank"><b>Схема XML</b></a></li> |
| <li><a href="http://relaxng.org/" target="_blank"><b>Relax NG</b></a> – простой язык схемы XML. Синтаксис XML </li> |
| <li><a href="http://relaxng.org/" target="_blank"><b>Relax NG Compact</b></a> – простой язык схемы XML. Синтаксис не типа XML</li> |
| <li><b>XML DTD – </b>альтернатива схеме XML предыдущего поколения<br></li> |
| <li><b><a href="http://www.w3.org/TR/wsdl" style="font-weight: bold;">WSDL</a> – </b>язык определения веб-служб. Язык схемы XML для определения веб-служб на основе SOAP.<br> |
| </li> |
| </ul> |
| </li> |
| <li><b>Имя пакета.</b> Указывается пакет. в котором будут созданы объекты Java.</li> |
| <li><b>Параметры компилятора.</b> В компиляторе доступно множество параметров, как описано <a href="http://docs.oracle.com/javaee/7/tutorial/doc/">в этом разделе</a> практического руководства по Java EE 7. Однако для мастера JAXB релевантны только перечисленные ниже параметры, для которых можно установить флажки в мастере: |
| <ul> |
| <li><b>nv.</b> Не выполняйте строгую проверку достоверности схемы ввода. По умолчанию перед обработкой выполняется строгая проверка достоверности исходной схемы. Это не означает, что во время привязки компилятор не выполняет <i>никакой</i> проверки достоверности; это просто означает, что производится менее строгая проверка.</li> |
| <li><b>readOnly.</b> Принудительно с помощью компилятора присвойте пометку 'только для чтения' для созданных ресурсов Java. По умолчанию компилятор не защищает создаваемые исходные файлы Java от записи.</li> |
| <li><b>npa.</b> Подавляется создание аннотаций уровня пакета в <tt>**/package-info.java</tt>. Установка этого флажка приводит к тому, что создаваемый код встраивает эти аннотации в другие создаваемые классы.</li> |
| <li><b>подробный.</b> Получения максимального результата компилятора, такого как сведения о ходе выполнения и предупреждения.</li> |
| <li><b>тихий.</b> Подавление результатов компилятора, таких как сведения о ходе выполнения и предупреждения.</li> |
| </ul> |
| </li> |
| <li><b>Использование расширения.</b> По умолчанию компиляторы строго принудительно реализуют правила, описанные в главе 'Совместимость' спецификации по JAXB. В стандартном (строгом) режиме также существуют ограничения на использование только тех настроек привязки, которые определены в спецификации. При выборе этого параметра разрешается использовать расширения JAXB Vendor Extensions.</li> |
| <li><b>Использовать файл привязки.</b> Позволяет импортировать и редактировать один или несколько файлов настройки привязки JAXB.</li> |
| <li><b>Использовать файл каталога.</b> Позволяет импортировать и редактировать файлы каталога OASIS.</li> |
| </ul> |
| </li> |
| <li>Введите текст <tt>CreditReport</tt> в поле "Имя привязки".</li> |
| <li>Установите в области "Файл схемы" флажок "Выбрать из локальной файловой системы". Нажмите кнопку "Обзор" и перейдите к файлу WSDL, который был загружен ранее при изучении данного руководства.</li> |
| <li>Разверните раскрывающийся список в области "Тип схемы" и выберите "WSDL" (если этот параметр не был выбран автоматически). |
| <p class="alert"><strong>Примечание: </strong> Предупреждение может быть отображено с указанием того, что схема поддержки WSDL является только экспериментальной и нужно использовать параметр WSDL для ее активации. Пропустите это предупреждение.</p></li> |
| <li>В поле "Имя пакета" введите <tt>org.netbeans.j2ee.wsdl.creditreport</tt>. На экране должны быть представлены следующие параметры: <img alt="Заполненный мастер JAXB" border="1" class="margin-around" height="531" src="../../../images_www/articles/72/websvc/jaxb/jaxb-wiz-2.png" title="Заполненный мастер JAXB" width="600"></li> |
| <li>Нажмите кнопку "Завершить".</li> |
| </ol> |
| |
| <p>В среде IDE будут созданы объекты Java на основе указанного документа XML. В следующем разделе будут изучены объекты Java в среде IDE. </p> |
| |
| <h2><a name="Exercise_2"></a> Просмотр выходных данных мастера JAXB</h2> |
| |
| <p>Назначение этого упражнения заключается в ознакомлении с инструментами в IDE NetBeans, предназначенными для работы с выходными данными мастера JAXB.</p> |
| |
| <ol> |
| |
| <li>Как и другие артефакты, которые восстанавливаются средой IDE при каждой сборке проекта, объекты Java создаются в папке <tt>build</tt>. Откройте окно "Файлы" и перейдите к папке созданных объектов Java. Эти объекты Java также отображаются в окне "Проекты" под узлом "Созданные исходные файлы".<br> <img alt="В представлениях 'Проекты' и 'Файлы' отображаются созданные объекты Java" border="1" class="margin-around" height="552" src="../../../images_www/articles/72/websvc/jaxb/gen-src.png" title="В представлении 'Проекты' отображаются созданные объекты Java" width="328"></li> |
| <li>Кроме того, в окне "Проекты" отображается новый узел, содержащий файл WSDL, как показано ниже. Обратите внимание, что если щелкнуть правой кнопкой мыши узел CreditReport, после чего мастер будет открыт повторно и можно будет изменить настройки, заданные ранее. <br> <img alt="Контекстное меню кредитной истории, в которой отображается параметр 'Изменить параметры JAXB'" class="margin-around" height="209" src="../../../images_www/articles/72/websvc/jaxb/change-jaxb-options.png" title="Контекстное меню кредитной истории, в которой отображается параметр 'Изменить параметры JAXB'" width="325"> |
| |
| </li> |
| <li> |
| <p>Если настройки в мастере были изменены, можно снова создать объекты Java, как описывается ниже: <br> <img alt="Контекстное меню привязки JAXB, в которой отображается параметр 'Восстановить код Java'" class="margin-around" height="209" src="../../../images_www/articles/72/websvc/jaxb/regen-code.png" title="Контекстное меню привязки JAXB, в которой отображается параметр 'Восстановить код Java'" width="325"></p> |
| </li> |
| <li>Щелкните правой кнопкой мыши файл WSDL и выберите пункт "Открыть". В редакторе откроется документ. <br> |
| </li> |
| </ol> |
| |
| <p>После создания в среде IDE объектов для документа XML можно воспользоваться некоторыми из описываемых средств для обработки созданных объектов Java.<!-- ===================================================================================== --> |
| </p> |
| |
| <h2><a name="Exercise_1"></a><!--Exercise 2: --> Упаковка кода Java в схему XML </h2> |
| |
| <p>Целью этого упражнения является обработка файлов и кода, созданных в среде IDE. Необходимо указать некоторые значения в одном из созданных объектов Java и затем упаковать этот объект в документ схемы XML, отображаемый в окне вывода среды IDE.</p> |
| |
| <ol> |
| |
| <li>Откройте главный класс, созданный мастером создания приложений Java. По умолчанию это класс с именем, идентичным имени проекта <tt>JseSimpleClientReport.java</tt>. Объявите в теле метода <tt>main</tt> класс <tt>CreditReport</tt>, который является одним из созданных корневых классов JAXB: |
| <pre class="examplecode">public static void main(String[] args) {<br> CreditReport cr = new CreditReport(); <br>}</pre> |
| </li> |
| <li>Появится значок предупреждения. Наведите на него курсор мыши: появится всплывающая подсказка с сообщением о невозможности найти класс <tt>CreditReport</tt> в среде IDE. Щелкните значок предупреждения левой кнопкой мыши и выберите команду добавления оператора импорта в среде IDE.</li> |
| <li>Введите в тело метода <tt>main</tt> текст "cr". Среда IDE предоставляет функцию автозавершения кода для артефактов JAXB (в некоторых системах потребуется нажать сочетание клавиш CTRL+ПРОБЕЛ): <br> <img alt="Параметры автозавершения кода" border="1" class="margin-around" height="332" src="../../../images_www/articles/72/websvc/jaxb/jaxb-codecompletion.png" title="Параметры автозавершения кода" width="447"></li> |
| <li>Установите некоторые значения для класса JAXB, например те, которые перечислены ниже (добавьте оператор импорта для <tt>java.math.BigInteger</tt>): |
| <pre class="examplecode"> cr.setFirstName("Butros Butros");<br> cr.setLastName("Gali");<br> cr.setDob("1930/05/30");<br> cr.setScore("900");<br> cr.setSsn("123-45-6789");<br><br> cr.setLatestAddress1("2500 Some Ave");<br> cr.setLatestAddress2("Suite 5000");<br> cr.setCity("New York");<br> cr.setState("New York");<br> cr.setCountry("USA");<br> cr.setPostalCode("NY 12345-6789");<br><br> cr.setCurrency("USD");<br> cr.setLiability(BigInteger.valueOf(2000000));<br> cr.setLiquidAssests(BigInteger.valueOf(3000000));<br> cr.setImmovableAssests(BigInteger.valueOf(5000000));<br> </pre> |
| </li> |
| <li>Введите в тело метода <tt>main</tt> текст "jaxbm" под добавленными значениями. Это сочетание букв обозначает "<a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#mars" target="_blank">Упаковка JAXB</a>". На экране должны быть представлены следующие параметры: <br> <img alt="Фрагмент в редакторе, отображающий красный подчеркнутый jaxbm" border="1" class="margin-around" height="171" src="../../../images_www/articles/72/websvc/jaxb/jaxb-template.png" title="Фрагмент в редакторе, отображающий красный подчеркнутый jaxbm" width="546"> |
| <p>Появится красное подчеркивание, поскольку введенные символы не представляют собой слово, относящееся к языку программирования Java. Эти символы составляют шаблон кода NetBeans, используемый в следующем действии. </p> <p class="notes">Среда NetBeans также предоставляет шаблон кода для распаковки JAXB. Сокращенно – "jaxbu".</p> |
| </li> |
| <li>Нажмите клавишу TAB. |
| <p>Символы "jaxbm" будут развернуты, и появится фрагмент кода:</p> |
| <pre class="examplecode">try {<br> javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());<br> javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();<br> marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N<br> marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);<br> marshaller.marshal(cr, System.out);<br>} catch (javax.xml.bind.JAXBException ex) {<br> // XXXTODO Handle exception<br> java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N<br>}</pre> |
| <p class="alert"><b>Внимание!</b> Расширение шаблона кода очень сильно зависит от конкретных условий. Нельзя нажать клавишу пробела, а затем – клавишу TAB или опечататься, исправить ошибку и нажать клавишу TAB и т.п. Необходимо правильно ввести фразу и нажать клавишу TAB. При возникновении опечатки удалите введенную фразу и введите ее заново. </p> |
| </li> |
| <li>Запустите приложение (щелкните правой кнопкой мыши узел проекта и выберите команду "Выполнить"). В окне "Вывод" отображается следующее: <br> <img alt="Последовательные выходные данные демонстрации" border="1" class="margin-around" height="321" src="../../../images_www/articles/72/websvc/jaxb/jaxb-output.png" title="Последовательные выходные данные демонстрации" width="577"></li> |
| </ol> |
| |
| <br> |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback:%20JAXB%20Wizard%20in%20NetBeans%20IDE">Мы ждем ваших отзывов</a></div> |
| |
| <br style="clear: both;"> |
| |
| <!-- ======================================================================================= --> |
| <h2><a name="seealso"></a>Дополнительные сведения</h2> |
| |
| <p>Дополнительные сведения об использовании IDE NetBeans для разработки приложений Java EE см. следующие ресурсы: </p> |
| |
| <ul> |
| |
| <li><a href="../../docs/websvc/jax-ws.html">Начало работы с веб-службами JAX-WS</a></li> |
| <li><a href="../../docs/websvc/client.html">Разработка клиентов веб-служб JAX-WS</a></li> |
| <li><a href="../../docs/websvc/rest.html">Начало работы с веб-службами RESTful</a></li> |
| <li><a href="../../docs/websvc/wsit.html">Расширенные возможности взаимодействия веб-служб</a></li> |
| <li><a href="../../trails/web.html">Учебная карта по веб-службам</a></li> |
| </ul> |
| |
| <p>Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans <a href="../../../community/lists/top.html">присоединяйтесь к списку рассылки nbj2ee@netbeans.org</a>.</p> |
| |
| </body></html> |