| <!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 "What Are You Doing" и отображающее список статусных сообщений друзей в 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> </p> |
| <p><strong>Создание набора модулей:</strong></p> |
| <ol> |
| <li>Щелкните 'Создать проект' (Ctrl-Shift-N в Linux и Windows, ⌘-Shift-N в MacOS). Откроется мастер создания проекта.</li> |
| <li>Выберите категорию "Модули NetBeans". Затем выберите проект "Приложение для платформы NetBeans". Нажмите кнопку "Далее".</li> |
| <li>Присвойте проекту имя RestfulClientPlatformApp. Выберите папку проекта. Подтвердите остальные значения по умолчанию и нажмите кнопку "Готово". Проект RestfulClientPlatformApp отображается в окне "Проекты".</li> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши узел проекта RestfulClientPlatformApp и выберите 'Свойства'. Откроется диалоговое окно Properties ("Свойства").</li> |
| <li>В диалоговом окне "Свойства" выберите категорию "Библиотеки". Обратите внимание, что включены только библиотеки платформы.</li> |
| <li>Разверните узел библиотек Enterprise. Отметьте флажок "Включен" для объекта "Библиотеки веб-служб RESTful".<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>Кнопка "Разрешить" выделяется красным, поскольку библиотеки веб-служб RESTful зависят от других библиотек, не включенных в набор. Нажмите кнопку "Разрешить", чтобы включить эти библиотеки.</li> |
| <li>Нажмите кнопку "ОК". Приложение на платформе готово к созданию клиентского модуля.</li> |
| </ol> |
| <h2><a name="create-module"></a>Создание клиентского модуля</h2> |
| <p>будет создан модуль, являющийся клиентом для службы Службы Twitter регистрируются "без дополнительной настройки" в диспетчере веб-служб IDE NetBeans. Можно добавить дополнительные</p> |
| <p><strong>Создание модуля и функциональных возможностей клиента:</strong></p> |
| <ol> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши подузел 'Модули' RestfulClientPlatformApp и выберите 'Добавить новый'... Откроется мастер создания проектов модулей.</li> |
| <li>Назовите модуль TwitterClientModule. Примите значения по умолчанию в других полях и нажмите кнопку "Далее". Открывается панель "Основные настройки модуля".</li> |
| <li>Дайте коду произвольное имя, например, <tt>org.my.twitter.friends</tt>. Примите значения по умолчанию в других полях и нажмите кнопку "Готово". Теперь TwitterClientModule отображается в узле "Модули" окна "Проекты" приложения на платформе.</li> |
| <li>Щелкните правой кнопкой мыши узел TwitterClientModule и выберите пункт "Открыть проект". Узел TwitterClientModule теперь отображается на уровне корня окна "Проекты".<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>В мастере "Создать файл" выберите категорию "Веб-службы" и тип файла "Клиент RESTful Java". Нажмите кнопку "Далее". Открывается панель "Новый клиент RESTful Java".</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>В разделе "Выберите ресурс REST" выберите "Зарегистрировано в IDE". Нажмите кнопку "Обзор" и выберите Twitter > Twitter OAuth > [statuses] > [friends_timeline.{format}]. Выберите этот ресурс и нажмите кнопку "ОК".<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. Примите значения по умолчанию и нажмите кнопку "Готово".<br> <img alt="Завершенное диалоговое окно "Создать клиент Java RESTful"." 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. Нажмите кнопку "Да".</li> |
| <li>Может отобразиться другой запрос на добавление модулей в путь класса. Нажмите кнопку "ОК".<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 и откройте соответствующие 'Свойства проекта'. Перейдите к разделу "Библиотеки" и добавьте модули с помощью "Добавить зависимость". Эта кнопка позволяет открыть список зависимостей модуля для обзора.<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 > Приложения</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>. Это необходимый параметр. Например, можно ввести следующее описание: "NetBeans Platform application calling the friends_timeline operation".</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>В окне 'Проекты' щелкните правой кнопкой мыши узел модуля и выберите 'Создать' > 'Окно'. Открывается мастер "Новое окно" с панелью "Основные настройки".</li> |
| <li>На панели "Основные настройки", выберите позицию окна <tt>editor</tt>, выберите параметр "Открывать при запуске приложения" и нажмите кнопку "Далее". Откроется панель "Имя, значок и расположение".</li> |
| <li>В поле "Префикс имен классов" введите <tt>twitterFriendsStatus</tt>. Выберите пакет <tt>org.my.twitter.friends</tt>. Нажмите кнопку "Завершить". <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>В представлении "Проект" открывается файл <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> </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 создается метод действия для кнопки и редактор переключается на представление "Источник" с выбранным методом действия. </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 создается метод действия для кнопки и редактор переключается на представление "Источник" с выбранным методом действия. <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("xml");<br> client.initOAuth();<br> Statuses response = client.getFriendsTimeline(Statuses.class, null, null, null, "10");<br> response.getStatus().size();<br> String text = "";<br> for (StatusType st : response.getStatus()) {<br> text += st.getUser().getName() + ": " + st.getText() + "\n";<br> }<br> jTextArea1.setText(text);<br>} </pre> |
| </li> |
| <li>Отображаются значки предупреждений для классов, которые не были найдены. Нажмите Ctrl-Shift-I (⌘-Shift-I в MacOS). Откроется диалоговое окно Fix All Imports ("Исправление всех операторов импорта"). Выберите классы <tt>twitter.twitteroauth.twitterresponse</tt>. Нажмите кнопку "ОК".<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 с созданным окном в разделе "Вывод". Щелкните "Регистрация" и откроется диалоговое окно с ссылкой, щелкнув которую можно авторизовать приложение на доступ к данным.</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. На странице отобразится ПИН-код. Скопируйте ПИН-код и вставьте его в поле строки подтверждения диалогового окна проверки подлинности. Нажмите кнопку "ОК".</p> |
| <p>Кнопка Log In ("Регистрация") теперь отключена, а кнопка Get Friends' Statuses ("Получить информацию о состоянии друзей") включена. Нажмите Get Friends' Statuses ("Получить информацию о состоянии друзей") и появится список последних сообщений о состоянии ваших друзей в 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 в разделе "Создать проект > Примеры > Модули NetBeans > Пример модуля Facebook"<br style="clear:both;"> <br> |
| <div class="feedback-box" ><a href="/about/contact_form.html?to=3&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> |