8 minute read

Глава 9. Создание RAP приложений

ГЛАВА 9

Создание RAP-приложений

Eclipse-проект Rich Ajax Platform (RAP) обеспечивает создание RIA (Rich Internet Application) Ajax-приложений с использованием Web-реализаций библиотек SWT, JFace и Workbench. Проект RAP представляет продукт Eclipse for RCP and RAP Developers, доступный для скачивания по адресу http://www.eclipse.org/ downloads/. Программный интерфейс RAP-платформы имеет сходство с программным интерфейсом RCP-платформы, что позволяет легко конвертировать RCP-приложения в RAP-приложения. Поэтому разработка RAP-приложений в среде Eclipse ведется на основе PDE-плагина с поддержкой платформы RAP, при этом целевой платформой разработки является RAP-платформа.

ПРИМЕЧАНИЕ

Целевая платформа — это набор Eclipse-плагинов, на основе которого должны запускаться разрабатываемые плагины.

RAP-платформа включает в себя среду выполнения Equinox со встроенным сервером Jetty и Servlet-контейнером, библиотеки RWT (RAP Widget Toolkit), Web-JFace и Web-Workbench. RAP-приложение может быть развернуто в любом Servlet-контейнере с сопутствующими плагинами RAP-платформы или в среде выполнения отдельной RAPплатформы. Приложения, созданные и запущенные на платформе RAP, доступны из Web-браузера с помощью HTTP-запроса. Работу среды Equinox на стороне сервера в отдельной RAP-платформе обеспечивают такие OSGi-модули, как: org.eclipse.equinox.http — реализация OSGi R4 HTTP-сервиса; org.eclipse.equinox.http.registry — регистрация сервлетов, Web-ресурсов и

JSP-страниц с помощью Eclipse-реестра; org.eclipse.equinox.http.servlet — обеспечивает сервлет HttpServiceServlet, который создает и регистрирует экземпляр HttpService, передавая ему HTTPзапросы серверу;

javax.servlet — реализация Servlet API; javax.servlet.jsp — реализация Servlet JSP API; org.mortbay.jetty — встроенный сервер Jetty;

org.eclipse.equinox.servletbridge.extensionbundle — пакетов библиотеки javax.servlet. обеспечивает экспорт

Работу среды Equinox на стороне сервера в Servlet-контейнере стороннего сервера обеспечивают модули: org.eclipse.equinox.servletbridge — обеспечивает запуск среды Equinox в Servletконтейнере;

org.eclipse.equinox.http.servletbridge — OSGi HTTP-сервис. представляет сторонний сервер как

Основой GUI-интерфейса RAP-приложения служит графическая система RWT (RAP Widget Toolkit) — Web-реализация системы SWT. При этом каждый RWTкомпонент GUI-интерфейса RAP-приложения состоит из двух частей — клиентской и серверной, взаимодействующих между собой с помощью Ajax-запросов. Серверная часть RWT-системы работает в среде Equinox, а клиентская часть основана на JavaScript-платформе qooxdoo (http://qooxdoo.org/) и работает в Webбраузере. Клиентская часть RWT-системы отвечает за отображение GUIкомпонентов, а серверная — за обработку их событий и за изменение отображения GUI-компонентов. На странице Web-браузера RWT-система создает Ajax-код, который вызывает JavaScript-библиотеки RAP-платформы для отображения подходящих GUI-компонентов. RWT-система является базой для Web-реализаций библиотек JFace и Workbench. Начать работу с RAP-платформой можно, скачав продукт Eclipse for RCP and RAP Developers (http://www.eclipse.org/downloads/). Данный дистрибутив уже включает в себя плагин RAP Tooling, предоставляющий документацию и шаблоны создания RAP-приложений. Однако для работы необходимо также инсталлировать саму RAP-платформу. Инсталляцию RAP-платформы обеспечивает страница приветствия Welcome продукта Eclipse for RCP and RAP Developers или первоначально мастер создания RAP-приложения. Для инсталляции RAP-платформы с помощью Welcome-страницы откроем среду Eclipse for RCP and RAP Developers и в меню Help выберем опцию Welcome. На Welcome-странице нажмем кнопку Overview и ссылку Rich Ajax Platform (RAP). На открывшейся странице нажмем ссылку Install Target Platform — в результате появится диалоговое окно (рис. 9.1), обеспечивающее инсталляцию RAP-платформы, при этом выбор флажка Activate the target after installation автоматически назначает инсталлированную RAP-платформу в качестве целевой Eclipseплатформы разработки. После инсталляции в разделе Plug-in development | Target Platform опции Preferences меню Window среды Eclipse можно увидеть, что инсталлированная RAP-платформа назначена в качестве целевой Eclipse-платформы разработки (рис. 9.2).

Рис. 9.1. Мастер инсталляции RAP-платформы

Рис. 9.2. RAP-платформа назначена в качестве целевой Eclipse-платформы разработки

Для создания RAP-приложения перейдем в перспективу Plug-in Development среды Eclipse и в меню File выберем команды New | Plug-in Project, введем имя проекта и дважды нажмем кнопку Next. Окно Templates (рис. 9.3) мастера создания проекта Eclipse-плагина предоставит выбор шаблонов RAP-приложений:  RAP Application with a view — приложение, отображающее в Web-браузере простое View-представление;  RAP Hello World — приложение, отображающее в Web-браузере окно приложения с заголовком;  RAP Mail Template — приложение, эмулирующее в Web-браузере почтового клиента. После выбора RAP-шаблона и нажатия кнопки Finish, если RAP-платформа не была инсталлирована, появится диалоговое окно мастера инсталляции RAP-платформы.

Рис. 9.3. Шаблоны RAP-приложений мастера создания проекта Eclipse-плагина

Рассматривая код RAP-приложений, созданных с помощью шаблонов RAP Application with a view, RAP Hello World и RAP Mail Template, можно увидеть, что он аналогичен коду RCP-приложений, созданных с помощью шаблонов Hello RCP, RCP Application with a view и RCP Mail Template. Отличие заключается лишь в структуре зависимостей от других плагинов. В RAP-приложениях зависимость org.eclipse.rap.ui заменяет зависимость org.eclipse.ui RCP-приложений. Поэтому поменяв на вкладке Dependences PDE-редактора эти зависимости, можно легко конвертировать RCP-приложение в RAP-приложение. Для запуска RAP-приложения из среды Eclipse в окне Package Explorer щелкнем правой кнопкой мыши на узле проекта и в контекстном меню выберем команды Run As | Run Configurations. Во вкладке Main конфигурации раздела RAP Application мастера убедимся, что в поле Entry Point or Application задана точка входа в приложение (рис. 9.4). На вкладке Bundles конфигурации раздела RAP Application мастера нажмем кнопку Add Required Bundles, гарантируя добавление в конфигурацию запуска всех необходимых модулей RAP-платформы, а затем убедимся, что демонстрационные модули org.eclipse.rap.demo и org.eclipse.rap.demo.databinding отключены, и нажмем кнопки Apply и Run. В результате в окне Web-браузера отобразится страница RAP-приложения (рис. 9.5).

Рис. 9.4. Вкладка Main конфигурации раздела RAP Application мастера запуска приложений

ПРИМЕЧАНИЕ

Web-страница RAP-приложения может не отобразиться с первого раза. В этом случае необходимо воспользоваться кнопкой обновления Web-страницы.

Платформа RAP c помощью расширения org.eclipse.rap.ui.branding обеспечивает брендинг RAP-приложения аналогично тому, как это делает расширение org.eclipse.core.runtime.products для RCP-приложений. Используя шаблон RAP Application with a view или RAP Mail Template, создадим RAP-приложение и откроем узел расширения org.eclipse.rap.ui.branding вкладки Extensions PDE-редактора (рис. 9.6).

Рис. 9.6. Брендинг RAP-приложения

Поле title позволяет определить заголовок Web-страницы RAP-приложения. Поле favicon определяет значок заголовка Web-страницы RAP-приложения. Поле body позволяет включить дополнительный HTML-код в тег <body> Web-страницы RAP-приложения с помощью HTML-файла, содержащего тег <body> с HTMLкодом. Поле exitConfirmationClass указывает Java-класс, обрабатывающий уход пользователя из RAP-приложения. Поле themeId позволяет изменить внешний вид RAP-приложения в Web-браузере с помощью CSS-стилей. Для создания своего CSS-стиля RAP-приложения необходимо создать CSS-файл и поместить его в RAP-проект. Не забываем при этом на вкладке Build PDEредактора, используя флажки, включать дополнительные ресурсы в сборку проекта. На вкладке Extensions PDE-редактора кнопкой Add добавим расширение org.eclipse.rap.ui.themes и щелкнем правой кнопкой мыши на его узле, в контекстном меню выберем команды New | theme и в поле file кнопкой Browse определим

созданный CSS-файл. Сохранив изменения, в поле themeId кнопкой Browse выберем идентификатор созданной темы. Теперь при запуске RAP-приложения к его Web-странице будут применены созданные CSS-стили. Для развертывания RAP-приложения в Servlet-контейнере необходимо создать WAR-файл приложения. Для этого воспользуемся инструментом WAR Products, который дополнительно инсталлируем в среду Eclipse. В меню Help выберем команду Install New Software, в поле Work with укажем адрес репозитория Eclipse-релиза, в разделе Web, XML, Java EE and OSGi Enterprise Development отметим флажок WAR Products и нажмем кнопку Next. После установки инструмента WAR Products в окне Project Explorer щелкнем правой кнопкой мыши на узле RAP-проекта и в контекстном меню последовательно выберем команды New | Other | Plug-in Development | WAR Product Configuration, нажмем кнопку Next, в поле File name введем имя файла, отметив при этом переключатель Use a launch configuration, и нажмем кнопку Finish (рис. 9.7).

Рис. 9.7. Мастер создания конфигурационного файла экспорта RAP-приложения в WAR-файл

На вкладке Overview редактора warproduct-файла щелкнем по ссылке Eclipse WAR Product export wizard, выберем каталог для экспорта WAR-файла и нажмем кнопку Finish. В результате получим WAR-файл RAP-приложения. Поместим созданный WAR-файл RAP-приложения в папку webapps каталога сервера Tomcat и запустим сервер с помощью инструмента startup.bat папки bin.

В адресной строке Web-браузера наберем адрес http://127.0.0.1:8080/raphello/ rap?startup=RAPHello.helloapp. В результате увидим Web-страницу RAP-приложения. Рассмотренный ранее тип RAP-приложений является аналогом RCP-приложений и расширяет границы подхода Rich Client Platform (RCP) до архитектуры Web 2.0. Другой тип приложений на основе RAP-платформы или RWT-приложения представляет собой аналог SWT-приложений и позволяет использовать программный интерфейс SWT API для создания GUI-интерфейса RIA-приложений. Отличие RWT-приложений от RAP-приложений состоит в том, что RWT-приложения не используют Workbench-среду. Для создания RWT-приложений можно использовать плагин WindowBuilder (http://www.eclipse.org/windowbuilder/), обеспечивающий шаблоны кода Javaприложений с GUI-интерфейсом на основе платформ Embedded Rich Client Platform (еRCP), Google Web Toolkit (GWT), SWT/JFace, XWT и Swing, предоставляющий визуальный графический редактор и большой набор мастеров. Адрес установки плагина WindowBuilder для команды Install New Software меню Help можно взять на странице http://www.eclipse.org/windowbuilder/ download.php. После инсталляции WindowBuilder-плагина в меню File среды Eclipse, настроенной на работу с RAP-платформой, выберем команды New | Plug-in Project, введем имя проекта и нажмем кнопку Next, сбросим флажки Generate an activator, ... и This plug-in will make contributions to the UI и нажмем кнопку Finish. В результате будет создан пустой проект приложения на основе RAP-платформы. На вкладке Dependences PDE-редактора файла MANIFEST.MF плагина кнопкой Add добавим зависимость org.eclipse.rap.ui, набрав org в поле Select a Plug-in. В окне Package Explorer щелкнем правой кнопкой мыши на узле проекта, в контекстном меню последовательно выберем команды New | Other | WindowBuilder | SWT Designer | SWT | Application Window и нажмем кнопку Next, введем имя пакета и имя класса, выберем переключатель public static main() method и нажмем кнопку Finish. В результате будет сгенерирован Java-класс с точкой входа — методом main(), в котором создается Shell-окно с заголовком. Однако RWT-приложение имеет другую точку входа — главный класс приложения должен реализовывать интерфейс org.eclipse.rwt.lifecycle.IEntryPoint с определением его метода public int createUI(). Поэтому изменим код сгенерированного класса:

package main; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.rwt.lifecycle.IEntryPoint; public class Main implements IEntryPoint{ public int createUI() {

Display display = Display.getDefault();

Shell shell = new Shell(); shell.setSize(450, 300); shell.setText("SWT Application");

shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } return 0; }}

Модифицированный класс все равно можно будет открывать в WindowBuilderредакторе, вкладка Design которого обеспечивает визуальное редактирование GUIинтерфейса. Запустить RWT-приложение из среды Eclipse можно, щелкнув правой кнопкой мыши в окне Package Explorer на узле проекта и в контекстном меню выбрав команды Run As | RWT Application. В результате в Web-браузере будет открыта страница RWT-приложения (рис. 9.8).

Рис. 9.8. Web-страница RWT-приложения

Как развернуть RWT-приложение в Servlet-контейнере, можно прочитать на странице по адресу http://wiki.eclipse.org/RAP/FAQ.

This article is from: