Создание клиентов служб RESTful в модулях NetBeans
Начиная с версии 6.9 среды IDE NetBeans в проектах доступна собственная поддержка REST. Код клиента RESTful теперь можно напрямую генерировать в модулях NetBeans. Также можно добавлять код клиента Jersey RESTful в Java или приложение.
В этом учебном курсе будет создано приложение на платформе NetBeans, использующее службу Twitter "What Are You Doing" и отображающее список статусных сообщений друзей в Twitter. Вначале нужно создать приложение на платформе. Выберите библиотеки, нужные для приложения. Затем создайте модуль NetBeans. Наконец, добавьте в модуль клиент RESTful и базовые элементы отображения. В клиенте используется авторизация OAuth.
К приложению на платформе NetBeans можно добавить библиотеки среды IDE NetBeans. В этом разделе будет создано приложение на платформе и добавлены необходимые библиотеки.
Создание набора модулей:
Щелкните "Создать проект" (Ctrl-Shift-N в Linux и Windows, ⌘-Shift-N в MacOS). Откроется мастер создания проекта.
Выберите категорию "Модули NetBeans". Затем выберите проект "Приложение для платформы NetBeans". Нажмите кнопку Next ("Далее").
Присвойте проекту имя RestfulClientPlatformApp. Выберите местоположение для проекта. Подтвердите остальные значения по умолчанию и нажмите кнопку "Готово". Проект RestfulClientPlatformApp отображается в окне "Проекты".
В окне "Проекты" щелкните правой кнопкой мыши узел проекта RestfulClientPlatformApp и выберите пункт "Свойства". Откроется диалоговое окно "Проекты".
В диалоговом окне "Свойства" выберите категорию "Библиотеки". Обратите внимание, что включены только библиотеки платформы.
Разверните узел библиотек Enterprise. Отметьте флажок "Включен" для объекта "Библиотеки веб-служб RESTful".
Кнопка "Разрешить" выделяется красным, поскольку библиотеки веб-служб RESTful зависят от других библиотек, не включенных в набор. Нажмите кнопку "Разрешить", чтобы включить эти библиотеки.
Нажмите кнопку "ОК". Приложение на платформе готово к созданию клиентского модуля.
Создание клиентского модуля
Всего нескольких действий достаточно для создания модуля, являющегося клиентом для службы "Что вы делаете?" Twitter. Службы Twitter регистрируются "как есть" в диспетчере веб-служб среды IDE NetBeans. Можно добавить дополнительные
Создание модуля и функциональных возможностей клиента:
В окне "Проекты" щелкните правой кнопкой мыши подузел "Модули" узла RestfulClientPlatformApp и выберите пункт "Добавить...". Открывается мастер "Новый модуль проекта".
Назовите модуль TwitterClientModule. Примите значения по умолчанию в других полях и нажмите кнопку "Далее". Открывается панель "Основные настройки модуля".
Дайте коду произвольное имя, например, org.my.twitter.friends. Примите значения по умолчанию в других полях и нажмите кнопку "Готово". Теперь TwitterClientModule отображается в узле "Модули" окна "Проекты" приложения на платформе.
Щелкните правой кнопкой мыши узел TwitterClientModule и выберите пункт "Открыть проект". Узел TwitterClientModule теперь отображается на уровне корня окна "Проекты".
Выберите созданный узел TwitterClientModule. Запустите мастер создания файла (Ctrl-N/⌘-N или значок "Создать файл" или контекстное меню узла).
В мастере "Создать файл" выберите категорию "Веб-службы" и тип файла "Клиент RESTful Java". Нажмите кнопку "Далее". Открывается панель "Новый клиент RESTful Java".
Назовите класс TwitterClient и дайте ему произвольное имя пакета или выберите ранее созданное имя.
В разделе "Выберите ресурс REST" выберите "Зарегистрировано в IDE". Нажмите кнопку "Обзор" и выберите Twitter > Twitter OAuth > [statuses] > [friends_timeline.{format}]. Выберите этот ресурс и нажмите кнопку "ОК".
Примечание: в среде IDE можно регистрировать дополнительные веб-службы. Перейдите к окну "Службы", щелкните правой кнопкой мыши узел "Веб-службы" и выберите "Добавить веб-службу". Можно добавить локальный файл или URL-адрес RESTful.
В качестве типа аутентификации автоматически выбирается тип OAuth. Примите значения по умолчанию и нажмите кнопку "Готово".
Открывается окно предупреждения. Отображается запрос, требуется ли генерировать артефакты Java из схемы XML в файле WADL. Нажмите кнопку "Да".
Может отобразиться другой запрос на добавление модулей в путь класса. Нажмите кнопку "ОК".
Чтобы добавить модули в путь класса, щелкните узел TwitterClientModule правой кнопкой мыши и выберите команды "Свойства проекта". Перейдите к разделу "Библиотеки" и добавьте модули с помощью "Добавить зависимость". Эта кнопка позволяет открыть список зависимостей модуля для обзора.
Класс TwitterClient создается и открывается в редакторе. Класс TwitterClient имеет сложную структуру и содержит следующие поля, методы и внутренние классы:
CONSUMER_KEY: строка Consumer Key
CONSUMER_SECRET: строка Consumer Sectret
initOAuth(): метод для инициализации OAuth
getFriendsTimeline(): метод, соответствующий методу HTTP getFriendsTimeline (из ресурса REST)
makeOAuthRequestUnique(): используется для нескольких вызовов API в одном сеансе
login: используется для входа в приложение Twitter (принудительная авторизация). Этот метод вызывает два дополнительных метода: getOAuthAccessToken и getOAuthRequestToken.
После этого ключи OAuth передаются с сайта Twitter и добавляются в клиент TwitterClient.
Получение ключей OAuth с сайта Twitter
Чтобы обеспечить доступ приложения платформы NetBeans к данным Twitter, необходимо получить с сайта Twitter ключи CUSTOMER и CUSTOMER_SECRET, а также строку подтверждения. Эти ключи необходимы, так как на сайте Twitter используется авторизация OAuth. При этом метод OAuth предполагает вызов со стороны веб-приложения на сервере. Чтобы получить ключи авторизации, необходимо зарегистрировать фиктивное веб-приложение.
Получение ключей OAuth с сайта Twitter:
Откройте обозреватель. Перейдите на страницу Twitter > Приложения и щелкните Зарегистрировать новое приложение . Предварительно следует войти в учетную запись Twitter. Если у вас есть несколько учетных записей, убедитесь в том, что выполнен вход в верную запись.
Введите NB Platform Friends Application в поле Application Name.
Введите описание в поле Description. Это необходимый параметр. Например, можно ввести следующее описание: "NetBeans Platform application calling the friends_timeline operation".
Введите произвольный URL-адрес в поле Application Website.
Выберите значение Client для параметра Application Type.
Выберите переключатель Read and Write для параметра Default Access Type .
Не изменяйте другие значения по умолчанию и нажмите кнопку Save. Откроется страница обозревателя с подробными сведениями о зарегистрированном приложении. Найдите параметры Consumer key и Consumer secret.
Скопируйте параметр Consumer key из обозревателя. Перейдите в среду IDE и скопируйте строку, в которой устанавливается параметр CONSUMER_KEY. Вставьте значение ключа Consumer key между кавычками.
Скопируйте и вставьте ключ Consumer secret key из обозревателя в клиент TwitterClient. Сохраните изменения.
Проектирование окна
Для завершения работы над проектом требуется добавить окно. Заполните окно компонентами пользовательского интерфейса и добавьте действие, чтобы нажатие на кнопку приводило к отображению статусов друзей.
Проектирование окна:
В окне "Проекты" щелкните правой кнопкой мыши узел модуля и выберите "Создать > Окно". Открывается мастер "Новое окно" с панелью "Основные настройки".
На панели "Основные настройки", выберите позицию окна editor, выберите параметр "Открывать при запуске приложения" и нажмите кнопку "Далее". Откроется панель "Имя, значок и расположение".
В поле "Префикс имен классов" введите twitterFriendsStatus. Выберите пакет org.my.twitter.friends. Нажмите кнопку Finish ("Готово").
В представлении "Проект" открывается файл twitterFriendsStatusTopComponent. Справа открывается палитра компонентов пользовательского интерфейса Swing.
Перетащите в область проектирования следующие элементы пользовательского интерфейса:
Элемент
Отображаемый текст
Параметры
Кнопка
Get Friends' Statuses
Измените имя переменной на getStatusesButton.
Отмените выбор свойства enabled
Кнопка
Log in
Измените имя переменной на loginButton
Панель прокрутки
--
Текстовая область
--
Перетащите на панель прокрутки
Измените размер текстового поля и окна с прокруткой и расположите кнопки произвольным образом.
Дважды щелкните кнопку Login. В среде IDE создается метод действия для кнопки и редактор переключается на представление "Источник" с выбранным методом действия.
Введите или скопируйте следующий код в тело метода действия кнопки Login. Этот код запускает метод входа приложения в Twitter, включает кнопку getStatuses и отключает кнопку Login. Вход приложения должен осуществляться только один раз. Обратите внимание на то, что для вызова метода входа в систему создание экземпляра клиента TwitterClient необязательно.
Дважды щелкните кнопку getStatuses. В среде IDE создается метод действия для кнопки и редактор переключается на представление "Источник" с выбранным методом действия.
Вставьте или введите следующий код обработки в тело метода действия кнопки getStatuses. Этот код создает экземпляр клиента TwitterClient и инициализирует OAuth с помощью маркеров, созданных методом login. Затем код вызывает getFriendsTimeline, получает список статусов, добавляет строку с именем пользователя и текстом к каждому из статусов, а затем передает полученную строку в текстовую область.
private void getStatusesButtonActionPerformed(java.awt.event.ActionEvent evt) { TwitterClient client = new TwitterClient("xml"); client.initOAuth(); Statuses response = client.getFriendsTimeline(Statuses.class, null, null, null, "10"); response.getStatus().size(); String text = ""; for (StatusType st : response.getStatus()) { text += st.getUser().getName() + ": " + st.getText() + "\n"; } jTextArea1.setText(text); }
Отображаются значки предупреждений для классов, которые не были найдены. Нажмите Ctrl-Shift-I (⌘-Shift-I на MacOS). Откроется диалоговое окно Fix All Imports ("Исправление всех операторов импорта"). Выберите классы twitter.twitteroauth.twitterresponse. Нажмите кнопку "ОК".
Приложение создано. Выполните приложение RestfulClientPlatformApp. Отображается платформа NetBeans с созданным окном в разделе "Вывод". Щелкните "Регистрация" и откроется диалоговое окно с ссылкой, щелкнув которую можно авторизовать приложение на доступ к данным.
Щелкните ссылку. В обозревателе откроется окно Twitter с запросом на разрешение доступа к данным Twitter. Нажмите кнопку Allow. На странице отобразится ПИН-код. Скопируйте ПИН-код и вставьте его в поле строки подтверждения диалогового окна проверки подлинности. Нажмите кнопку "ОК".
Кнопка Log In ("Регистрация") теперь отключена, а кнопка Get Friends' Statuses ("Получить информацию о состоянии друзей") включена. Нажмите Get Friends' Statuses ("Получить информацию о состоянии друзей") и появится список последних сообщений о состоянии ваших друзей в Twitter.
Дополнительные упражнения
Ниже приведены дополнительные ресурсы для изучения:
Добавьте к модулю другое окно с помощью других методов интерфейса API friends_timeline.
Добавьте к проекту другой модуль с помощью другого ресурса Twitter.
Изучите пример модуля Facebook в разделе "Создать проект > Примеры > Модули NetBeans > Пример модуля Facebook"
Для того, чтобы иметь возможность оставлять комментарии и предложения, обращаться за поддержкой и получать информацию о последних достижениях в области функциональных возможностей разработки для Java EE с помощью среды IDE NetBeans, подпишитесь на список рассылки .
Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области разработки приложений RCP на платформе NetBeans можно в списке рассылки .