blob: b9583f400983fb7cb74b37eda34458c4819c91dc [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><link rel="stylesheet" href="../../../print.css" type="text/css" media="print">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<title>Создание клиентов служб RESTful в модулях NetBeans - учебный курс по 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, REST, RESTFUL">
<meta name="description"
content="Use NetBeans IDE's built-in Jersey RESTful webservice support to create a RESTful
service client inside a NetBeans module or Java application.">
<link rel="stylesheet" href="../../../netbeans.css"></head>
<body>
<h1>Создание клиентов служб RESTful в модулях NetBeans</h1>
<p>Начиная с IDE NetBeans 6.9, собственная поддержка REST доступна в проектах модулей NetBeans. Код клиента RESTful теперь можно напрямую генерировать в модулях NetBeans. Также можно добавлять код клиента Jersey RESTful в Java или приложение. </p>
<p>В этом учебном курсе будет создано приложение на платформе NetBeans, использующее службу Twitter &quot;What Are You Doing&quot; и отображающее список статусных сообщений друзей в Twitter. Вначале нужно создать приложение на платформе. Выберите библиотеки, нужные для приложения. Затем создайте модуль NetBeans. Наконец, добавьте в модуль клиент RESTful и базовые элементы отображения. В клиенте используется авторизация OAuth.</p>
<p><b>Содержание</b></p>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 6.9-7.1" class="stamp" height="114" src="../../../images_www/articles/69/netbeans-stamp-69-70-71.png" title="Содержимое на этой странице применимо к IDE NetBeans 6.9-7.1" width="114">
<ul>
<!-- <li><a href="#Exercise_0">Exercise 0: Install and configure the tutorial environment</a></li>-->
<li><a href="#create-platform-app"> Создание приложения на платформе</a></li>
<li><a href="#create-module"> Создание клиентского модуля</a></li>
<li><a href="#design-window"> Проектирование окна</a></li>
<li><a href="#more-exercises">Дополнительные примеры</a></li>
<li><a href="#seealso">Дополнительные сведения</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="https://netbeans.org/downloads/index.html" target="_blank">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" target="_blank">Комплект для разработчика на языке Java (JDK)</a></td>
<td class="tbltd1">версия 6 или 7</td>
</tr>
</tbody>
</table>
<h2><a name="create-platform-app"> Создание приложения на платформе</a></h2>
<p>Можно добавить библиотеки IDE NetBeans к приложению на платформе NetBeans. В этом разделе будет создано приложение на платформе и добавлены необходимые библиотеки.</p>
<p>&nbsp;</p>
<p><strong>Создание набора модулей:</strong></p>
<ol>
<li>Щелкните 'Создать проект' (Ctrl-Shift-N в Linux и Windows, ⌘-Shift-N в MacOS). Откроется мастер создания проекта.</li>
<li>Выберите категорию &quot;Модули NetBeans&quot;. Затем выберите проект &quot;Приложение для платформы NetBeans&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Присвойте проекту имя RestfulClientPlatformApp. Выберите папку проекта. Подтвердите остальные значения по умолчанию и нажмите кнопку &quot;Готово&quot;. Проект RestfulClientPlatformApp отображается в окне &quot;Проекты&quot;.</li>
<li>В окне 'Проекты' щелкните правой кнопкой мыши узел проекта RestfulClientPlatformApp и выберите 'Свойства'. Откроется диалоговое окно Properties (&quot;Свойства&quot;).</li>
<li>В диалоговом окне &quot;Свойства&quot; выберите категорию &quot;Библиотеки&quot;. Обратите внимание, что включены только библиотеки платформы.</li>
<li>Разверните узел библиотек Enterprise. Отметьте флажок &quot;Включен&quot; для объекта &quot;Библиотеки веб-служб RESTful&quot;.<br> <img alt="Свойства набора, в которых показываются библиотеки RESTful WS, выбранные для включения" class="margin-around" height="421" src="../../../images_www/articles/73/websvc/jersey-rcp-client/suite-rest-libraries.png" width="600"></li>
<li>Кнопка &quot;Разрешить&quot; выделяется красным, поскольку библиотеки веб-служб RESTful зависят от других библиотек, не включенных в набор. Нажмите кнопку &quot;Разрешить&quot;, чтобы включить эти библиотеки.</li>
<li>Нажмите кнопку &quot;ОК&quot;. Приложение на платформе готово к созданию клиентского модуля.</li>
</ol>
<h2><a name="create-module"></a>Создание клиентского модуля</h2>
<p>будет создан модуль, являющийся клиентом для службы Службы Twitter регистрируются "без дополнительной настройки" в диспетчере веб-служб IDE NetBeans. Можно добавить дополнительные</p>
<p><strong>Создание модуля и функциональных возможностей клиента:</strong></p>
<ol>
<li>В окне 'Проекты' щелкните правой кнопкой мыши подузел 'Модули' RestfulClientPlatformApp и выберите 'Добавить новый'... Откроется мастер создания проектов модулей.</li>
<li>Назовите модуль TwitterClientModule. Примите значения по умолчанию в других полях и нажмите кнопку &quot;Далее&quot;. Открывается панель &quot;Основные настройки модуля&quot;.</li>
<li>Дайте коду произвольное имя, например, <tt>org.my.twitter.friends</tt>. Примите значения по умолчанию в других полях и нажмите кнопку &quot;Готово&quot;. Теперь TwitterClientModule отображается в узле &quot;Модули&quot; окна &quot;Проекты&quot; приложения на платформе.</li>
<li>Щелкните правой кнопкой мыши узел TwitterClientModule и выберите пункт &quot;Открыть проект&quot;. Узел TwitterClientModule теперь отображается на уровне корня окна &quot;Проекты&quot;.<br> <img alt="В окне 'Проекты' отображается корневой узел" class="margin-around" height="205" src="../../../images_www/articles/73/websvc/jersey-rcp-client/module-root-node.png" width="254"></li>
<li>Выберите созданный узел TwitterClientModule. Запустите мастер создания файлов (Ctrl-N/⌘-N или значок 'Создать файл' или контекстное меню узла). </li>
<li>В мастере &quot;Создать файл&quot; выберите категорию &quot;Веб-службы&quot; и тип файла &quot;Клиент RESTful Java&quot;. Нажмите кнопку &quot;Далее&quot;. Открывается панель &quot;Новый клиент RESTful Java&quot;.</li>
<li>Назовите класс TwitterClient и дайте ему произвольное имя пакета или выберите ранее созданное имя. <br> <img alt="Мастер создания клиентов RESTful, в котором отображается класс и имя пакета" class="margin-around" height="429" src="../../../images_www/articles/73/websvc/jersey-rcp-client/new-rest-client-wiz-noresource.png" width="600"></li>
<li>В разделе &quot;Выберите ресурс REST&quot; выберите &quot;Зарегистрировано в IDE&quot;. Нажмите кнопку &quot;Обзор&quot; и выберите Twitter &gt; Twitter OAuth &gt; [statuses] &gt; [friends_timeline.{format}]. Выберите этот ресурс и нажмите кнопку &quot;ОК&quot;.<br> <img alt="Ресурс rest friends_timeline, выбранный в диалоговом окне 'Доступные ресурсы REST'" class="margin-around" height="512" src="../../../images_www/articles/73/websvc/jersey-rcp-client/browse-rest-resources.png" width="430">
<p class="notes"><strong>Примечание.</strong> Можно зарегистрировать дополнительные веб-службы в IDE. Перейдите в окно 'Службы', щелкните правой кнопкой мыши узел 'Веб-службы' и выберите 'Добавить веб-службу'. Можно добавить локальный файл или URL-адрес RESTful.<br> <img alt="Параметр 'Добавить веб-службу' для диспетчера веб-служб в окне 'Службы'" class="margin-around b-right b-bottom" height="120" src="../../../images_www/articles/73/websvc/jersey-rcp-client/register-ws.png" width="215"></p></li>
<li>В качестве типа аутентификации автоматически выбирается тип OAuth. Примите значения по умолчанию и нажмите кнопку &quot;Готово&quot;.<br> <img alt="Завершенное диалоговое окно &quot;Создать клиент Java RESTful&quot;." class="margin-around" height="475" src="../../../images_www/articles/73/websvc/jersey-rcp-client/new-rest-client-wiz-complete.png" width="585"></li>
<li>Открывается окно предупреждения. Отображается запрос, требуется ли генерировать артефакты Java из схемы XML в файле WADL. Нажмите кнопку &quot;Да&quot;.</li>
<li>Может отобразиться другой запрос на добавление модулей в путь класса. Нажмите кнопку &quot;ОК&quot;.<br><img alt="Диалоговое окно предупреждения об отсутствующих зависимостях" class="margin-around" height="213" src="../../../images_www/articles/73/websvc/jersey-rcp-client/dependencies-warning.png" width="538"></li>
<li>Если необходимо добавить модули к пути к классу, щелкните правой кнопкой мыши узел TwitterClientModule и откройте соответствующие 'Свойства проекта'. Перейдите к разделу &quot;Библиотеки&quot; и добавьте модули с помощью &quot;Добавить зависимость&quot;. Эта кнопка позволяет открыть список зависимостей модуля для обзора.<br> <img alt="Окно свойств модуля клиента Twitter, раздел 'Библиотеки'" class="margin-around" height="452" src="../../../images_www/articles/73/websvc/jersey-rcp-client/add-dependencies.png" width="596"></li>
</ol>
<p>Класс TwitterClient создается и открывается в редакторе. Класс TwitterClient имеет сложную структуру и содержит следующие поля, методы и внутренние классы:</p>
<ul>
<li><tt>CONSUMER_KEY</tt>: строка Consumer Key</li>
<li><tt>CONSUMER_SECRET</tt>: строка Consumer Sectret</li>
<li><tt>initOAuth()</tt>: метод для инициализации OAuth</li>
<li><tt>getFriendsTimeline()</tt>: метод, соответствующий методу HTTP: getFriendsTimeline (из ресурса REST)</li>
<li><tt>makeOAuthRequestUnique()</tt>: используется для нескольких вызовов API в одном сеансе</li>
<li><tt>login</tt>: используется для входа в приложение Twitter (принудительная авторизация). Этот метод вызывает два дополнительных метода: <tt>getOAuthAccessToken</tt> и <tt>getOAuthRequestToken</tt>.</li>
</ul>
<p> После этого ключи OAuth передаются с сайта Twitter и добавляются в клиент TwitterClient.</p>
<h2>Получение ключей OAuth с сайта Twitter</h2>
<p>Чтобы обеспечить доступ приложения платформы NetBeans к данным Twitter, необходимо получить с сайта Twitter ключи CUSTOMER и CUSTOMER_SECRET, а также строку подтверждения. Эти ключи необходимы, так как на сайте Twitter используется авторизация OAuth. При этом метод OAuth предполагает вызов со стороны веб-приложения на сервере. Чтобы получить ключи авторизации, необходимо зарегистрировать фиктивное веб-приложение.</p>
<p><b>Получение ключей OAuth с сайта Twitter:</b></p>
<ol>
<li>Откройте браузер. Перейдите на страницу <a href="http://twitter.com/apps" target="_blank">Twitter &gt; Приложения</a> и щелкните <a href="http://twitter.com/apps/new" target="_blank">Зарегистрировать новое приложение </a>. Предварительно следует войти в учетную запись Twitter. Если у вас есть несколько учетных записей, убедитесь в том, что выполнен вход в верную запись.</li>
<li>Введите <tt>NB Platform Friends Application</tt> в поле <strong>Имя приложения</strong>.</li>
<li>Введите описание в поле <strong>Description</strong>. Это необходимый параметр. Например, можно ввести следующее описание: &quot;NetBeans Platform application calling the friends_timeline operation&quot;.</li>
<li>Введите произвольный URL-адрес в поле <strong>Application Website</strong>.</li>
<li>Выберите значение Client для параметра <strong>Application Type</strong>.</li>
<li>Выберите переключатель Read and Write для параметра <strong>Default Access Type </strong>. </li>
<li>Не изменяйте другие значения по умолчанию и нажмите кнопку Save. Откроется страница браузера с подробными сведениями о зарегистрированном приложении. Найдите параметры <strong>Consumer key</strong> и <strong>Consumer secret</strong>.</li>
<li>Скопируйте параметр Consumer key из браузера. Перейдите в среду IDE и скопируйте строку, в которой устанавливается параметр <tt>CONSUMER_KEY</tt>. Вставьте значение ключа Consumer key между кавычками. <br><img alt="TwitterClient, вкотором отображается местоположение CONSUMER_KEY и CONSUMER_SECRET" class="margin-around" height="220" src="../../../images_www/articles/73/websvc/jersey-rcp-client/keys-in-twitter-client.png" width="467"></li>
<li>Скопируйте и вставьте ключ Consumer secret key из браузера в клиент TwitterClient. Сохраните изменения.</li>
</ol>
<h2><a name="design-window"></a>Проектирование окна</h2>
<p>Для завершения работы над проектом требуется добавить окно. Заполните окно компонентами пользовательского интерфейса и добавьте действие, чтобы нажатие на кнопку приводило к отображению статусов друзей.</p>
<p><strong>Проектирование окна: </strong></p>
<ol>
<li>В окне 'Проекты' щелкните правой кнопкой мыши узел модуля и выберите 'Создать' > 'Окно'. Открывается мастер &quot;Новое окно&quot; с панелью &quot;Основные настройки&quot;.</li>
<li>На панели &quot;Основные настройки&quot;, выберите позицию окна <tt>editor</tt>, выберите параметр &quot;Открывать при запуске приложения&quot; и нажмите кнопку &quot;Далее&quot;. Откроется панель &quot;Имя, значок и расположение&quot;.</li>
<li>В поле &quot;Префикс имен классов&quot; введите <tt>twitterFriendsStatus</tt>. Выберите пакет <tt>org.my.twitter.friends</tt>. Нажмите кнопку &quot;Завершить&quot;. <br><img alt="Панель 'Имя, значок и местоположение' мастера создания окон, в котором отображается префикс имени класса и имя пакета" class="margin-around" height="453" src="../../../images_www/articles/73/websvc/jersey-rcp-client/new-window-wiz.png" width="600"></li>
<li>В представлении &quot;Проект&quot; открывается файл <tt>twitterFriendsStatusTopComponent</tt>. Справа открывается палитра компонентов пользовательского интерфейса Swing.<br> <img alt="Представление проектирования нового окна и палитра компонентов Swing, в которое еще не добавлены компоненты" class="margin-around" height="407" src="../../../images_www/articles/73/websvc/jersey-rcp-client/empty-window.png" width="587"></li>
<li>Перетащите в область проектирования следующие элементы пользовательского интерфейса:
<table width="527" border="1">
<tbody>
<tr>
<th width="79" class="tblheader" scope="col">Элемент</th>
<th width="135" class="tblheader" scope="col">Отображаемый текст</th>
<th width="291" class="tblheader" scope="col">Параметры</th>
</tr>
<tr>
<td>Кнопка</td>
<td>Получить информацию о состоянии друзей</td>
<td><p>Измените имя переменной на getStatusesButton.</p>
<p>Отмените выбор свойства enabled </p>
<p><img alt="Отменен выбор свойства enabled" height="18" src="../../../images_www/articles/73/websvc/jersey-rcp-client/unselected-enabled-prop.png" width="115"> </p>
</td>
</tr>
<tr>
<td>Кнопка</td>
<td>Вход</td>
<td>Измените имя переменной на loginButton</td>
</tr>
<tr>
<td>Панель прокрутки</td>
<td>--</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Текстовая область</td>
<td>--</td>
<td>Перетащите на панель прокрутки</td>
</tr>
</tbody>
</table>
<p>Измените размер текстового поля и окна с прокруткой и расположите кнопки произвольным образом. <br> <img alt="Представление проектирования нового окна, в котором отображается завершенное окно" class="margin-around" height="415" src="../../../images_www/articles/73/websvc/jersey-rcp-client/designed-window.png" width="536"></li>
<li>Дважды щелкните кнопку 'Вход'. В среде IDE создается метод действия для кнопки и редактор переключается на представление &quot;Источник&quot; с выбранным методом действия. </li>
<li>Введите или скопируйте следующий код в тело метода действия кнопки Login. Этот код запускает метод входа приложения в Twitter, включает кнопку getStatuses и отключает кнопку Login. Вход приложения должен осуществляться только один раз. Обратите внимание на то, что для вызова метода входа в систему создание экземпляра клиента TwitterClient необязательно.
<pre class="examplecode">private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {
TwitterClient.login();
getStatusesButton.setEnabled(true);
loginButton.setEnabled(false);
} </pre></li>
<li>Дважды щелкните кнопку getStatuses. В среде IDE создается метод действия для кнопки и редактор переключается на представление &quot;Источник&quot; с выбранным методом действия. <br>
</li>
<li>Вставьте или введите следующий код обработки в тело метода действия кнопки getStatuses. Этот код создает экземпляр клиента TwitterClient и инициализирует OAuth с помощью маркеров, созданных методом <tt>login</tt>. Затем код вызывает <tt>getFriendsTimeline</tt>, получает список статусов, добавляет строку с именем пользователя и текстом к каждому из статусов, а затем передает полученную строку в текстовую область.
<pre class="examplecode">private void getStatusesButtonActionPerformed(java.awt.event.ActionEvent evt) { <br> TwitterClient client = new TwitterClient(&quot;xml&quot;);<br> client.initOAuth();<br> Statuses response = client.getFriendsTimeline(Statuses.class, null, null, null, &quot;10&quot;);<br> response.getStatus().size();<br> String text = &quot;&quot;;<br> for (StatusType st : response.getStatus()) {<br> text += st.getUser().getName() + &quot;: &quot; + st.getText() + &quot;\n&quot;;<br> }<br> jTextArea1.setText(text);<br>} </pre>
</li>
<li>Отображаются значки предупреждений для классов, которые не были найдены. Нажмите Ctrl-Shift-I (⌘-Shift-I в MacOS). Откроется диалоговое окно Fix All Imports (&quot;Исправление всех операторов импорта&quot;). Выберите классы <tt>twitter.twitteroauth.twitterresponse</tt>. Нажмите кнопку &quot;ОК&quot;.<br> <img alt="Диалоговое окно 'Исправить все выражения импорта', в котором отображаются правильные классы для импорта" class="margin-around" height="227" src="../../../images_www/articles/73/websvc/jersey-rcp-client/fix-imports.png" width="573"></li>
</ol>
<p>Приложение создано. Выполните приложение RestfulClientPlatformApp. Отображается платформа NetBeans с созданным окном в разделе &quot;Вывод&quot;. Щелкните &quot;Регистрация&quot; и откроется диалоговое окно с ссылкой, щелкнув которую можно авторизовать приложение на доступ к данным.</p>
<p><img alt="Диалоговое окно авторизации OAuth для передачи данных приложению" class="margin-around" height="167" src="../../../images_www/articles/73/websvc/jersey-rcp-client/oauth-auth-dialog.png" width="501"></p>
<p>Щелкните ссылку. В браузере откроется окно Twitter с запросом на разрешение доступа к данным Twitter. Нажмите кнопку Allow. На странице отобразится ПИН-код. Скопируйте ПИН-код и вставьте его в поле строки подтверждения диалогового окна проверки подлинности. Нажмите кнопку &quot;ОК&quot;.</p>
<p>Кнопка Log In (&quot;Регистрация&quot;) теперь отключена, а кнопка Get Friends' Statuses (&quot;Получить информацию о состоянии друзей&quot;) включена. Нажмите Get Friends' Statuses (&quot;Получить информацию о состоянии друзей&quot;) и появится список последних сообщений о состоянии ваших друзей в Twitter.</p>
<img alt="Запущено приложение, отображающее сообщения состояния" class="margin-around" height="384" src="../../../images_www/articles/73/websvc/jersey-rcp-client/running-app.png" width="533">
<h2><a name="more-exercises"></a>Дополнительные упражнения</h2>
<p>Ниже приведены дополнительные мысли для исследования:</p>
<ul>
<li>Добавьте к модулю другое окно с помощью других методов интерфейса API friends_timeline.</li>
<li>Добавьте к проекту другой модуль с помощью другого ресурса Twitter.</li>
<li>Изучите пример модуля Facebook в разделе &quot;Создать проект &gt; Примеры &gt; Модули NetBeans &gt; Пример модуля Facebook&quot;<br style="clear:both;"> <br>
<div class="feedback-box" ><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20RESTful%20Service%20Clients%20in%20NetBeans%20Modules">Мы ждем ваших отзывов</a></div>
<!-- ======================================================================================= -->
</li>
</ul>
<h2><a name="seealso"></a>Дополнительные сведения</h2>
<p>Дополнительные сведения об использовании IDE NetBeans для разработки приложений Java EE см. следующие ресурсы: </p>
<ul>
<li><a href="http://netbeans.dzone.com/oauth-support-netbeans" target="_blank">DZone: поддержка OAuth в IDE NetBeans 6.9</a></li>
<li><a href="../../docs/websvc/rest.html">Начало работы с веб-службами RESTful</a></li>
<li><a href="http://platform.netbeans.org/tutorials/nbm-quick-start.html" target="_blank">Руководство по началу работы с платформой NetBeans</a></li>
<li><a href="../../trails/web.html">Учебная карта по веб-службам</a></li>
<li><a href="https://netbeans.org/kb/trails/platform.html" target="_blank">Учебная карта по платформе NetBeans</a></li>
</ul>
<p>Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans <a href="../../../community/lists/top.html">присоединяйтесь к списку рассылки nbj2ee@netbeans.org</a>.</p>
<p>Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области разработки приложений RCP на платформе NetBeans можно в <a href="../../../community/lists/top.html">списке рассылки dev@platform.netbeans.org</a>.</p>
</body>