blob: 6a8233790fd295898f31554bc25a7b68267486a8 [file] [log] [blame]
<!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>Выберите команду &quot;Файл&quot; &gt; &quot;Новый проект&quot;. В области &quot;Категории&quot; выберите &quot;Java&quot;. В области &quot;Проекты&quot; выберите &quot;Веб-приложение&quot; и нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите в поле &quot;Имя проекта&quot; текст <tt>JseSimpleClientReport</tt> и нажмите кнопку &quot;Готово&quot;. В окне 'Проекты' отобразится проект JseSimpleClientReport.</li>
<li>В окне 'Проекты' щелкните правой кнопкой мыши узел <tt>JseSimpleClientReport</tt> и выберите 'Создать' > 'Другие' > XML > 'Привязка JAXB'. Затем нажмите кнопку &quot;Дальше&quot;. Появится мастер создания привязки 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> &ndash; простой язык схемы XML. Синтаксис XML </li>
<li><a href="http://relaxng.org/" target="_blank"><b>Relax NG Compact</b></a> &ndash; простой язык схемы XML. Синтаксис не типа XML</li>
<li><b>XML DTD &ndash; </b>альтернатива схеме XML предыдущего поколения<br></li>
<li><b><a href="http://www.w3.org/TR/wsdl" style="font-weight: bold;">WSDL</a> &ndash; </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> в поле &quot;Имя привязки&quot;.</li>
<li>Установите в области &quot;Файл схемы&quot; флажок &quot;Выбрать из локальной файловой системы&quot;. Нажмите кнопку &quot;Обзор&quot; и перейдите к файлу WSDL, который был загружен ранее при изучении данного руководства.</li>
<li>Разверните раскрывающийся список в области &quot;Тип схемы&quot; и выберите &quot;WSDL&quot; (если этот параметр не был выбран автоматически).
<p class="alert"><strong>Примечание: </strong> Предупреждение может быть отображено с указанием того, что схема поддержки WSDL является только экспериментальной и нужно использовать параметр WSDL для ее активации. Пропустите это предупреждение.</p></li>
<li>В поле &quot;Имя пакета&quot; введите <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>Нажмите кнопку &quot;Завершить&quot;.</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>. Откройте окно &quot;Файлы&quot; и перейдите к папке созданных объектов Java. Эти объекты Java также отображаются в окне &quot;Проекты&quot; под узлом &quot;Созданные исходные файлы&quot;.<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>Кроме того, в окне &quot;Проекты&quot; отображается новый узел, содержащий файл 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 и выберите пункт &quot;Открыть&quot;. В редакторе откроется документ. <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> текст &quot;cr&quot;. Среда 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> текст &quot;jaxbm&quot; под добавленными значениями. Это сочетание букв обозначает &quot;<a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#mars" target="_blank">Упаковка JAXB</a>&quot;. На экране должны быть представлены следующие параметры: <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. Сокращенно &ndash; &quot;jaxbu&quot;.</p>
</li>
<li>Нажмите клавишу TAB.
<p>Символы &quot;jaxbm&quot; будут развернуты, и появится фрагмент кода:</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> Расширение шаблона кода очень сильно зависит от конкретных условий. Нельзя нажать клавишу пробела, а затем &ndash; клавишу TAB или опечататься, исправить ошибку и нажать клавишу TAB и т.п. Необходимо правильно ввести фразу и нажать клавишу TAB. При возникновении опечатки удалите введенную фразу и введите ее заново. </p>
</li>
<li>Запустите приложение (щелкните правой кнопкой мыши узел проекта и выберите команду &quot;Выполнить&quot;). В окне &quot;Вывод&quot; отображается следующее: <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&amp;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>