Реализация веб-приложения

Чтобы создать новое веб-приложение AggreGate с нуля, необходимо реализовать несколько классов Java.

Класс веб-приложения

Класс веб-приложения должен реализовывать интерфейс WebApplication. Перепишите методы deploy() и stop(), чтобы зарегистрировать и отменить регистрацию веб-приложения.

Пример: регистрация веб-приложения:

Обратите внимание, что путь контекста используется в запросе к этому приложению. Второй параметр - это имя веб-приложения (файл WAR).

Пример: отмена регистрации веб-приложения:

Используйте ранее сохраненный контекст, чтобы отменить регистрацию веб-приложения.

Класс плагина

Класс плагина должен быть унаследован у AbstractContextPlugin. Вам потребуется переписать один из наследуемых методов, чтобы добавить веб-приложение на веб-сервер.

Пример: использование метода globalInit, чтобы добавить веб-приложение:

Этого будет достаточно для многих веб-приложений. Для всех остальных это обычный класс плагина. Можно прочитать больше о его реализации в соответствующей теме.

Класс java-сервлет

Класс Java-сервлет должен быть унаследован от HttpServlet. Этот класс и его методы являются ответственными за процессы запросов и ответов. Детализированную информацию о реализации сервлета можно найти в соответствующей документации https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServlet.html.

Пример: Простая реализация doGet:

Особое внимание необходимо обратить на взаимодействие сервлета и AggreGate Server. Посмотрите на пробную версию веб-приложения в наборе средств разработки, чтобы найти примеры взаимодействия контекстов и использования прав доступа пользователей.

Измение дескриптора плагина

Чтобы создать дескриптор плагина для веб-приложения, измените следующее в демо-файле plugin.xml:

  • Измените последнее слово в атрибуте id тэга <plugin> для нового ID плагина. ID должен содержать только строчные буквы, цифры и символы подчеркивания. Например, если ID вашего предполагаемого плагина - это xyz, вам понадобится установить ID атрибут в com.tibbo.aggregate.common.plugin.context.xyz

  • Измените атрируб class тэга <plugin> на полное имя класса плагина

  • Введите описание компонента в тело тэга <doc-text>

  • Измените атрибут id тэга <extension> на новый ID плагина

Изменение дескриптора внедрения

Дескриптор внедрения описывает, как должно внедряться веб-приложение. Чтобы его создать, нужно изменить следующее в демо-файле web.xml:

  • Изменить содержимое элемента <display-name>

  • Изменить элемент <servlet-name> для элементов <servlet> и <servlet-mapping>

  • Изменить <servlet-class> на полное имя класса Java-сервлета

  • Индивидуализировать сопоставление сервлета и установить другие настройки внедрения при необходимости

Больше информации о внедрении веб-приложения можно найти на веб-сайте https://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment.html.

Создание и внедрение архива плагинов

Следуйте этим шагам, предназначенным для файла build.xml из примера:

  • Измените имя проекта и имена файлов назначения (файлы JAR и WAR)

  • Запустите build.gradle, используя Gradle, чтобы создать файлы JAR и WAR

  • Скопируйте файл JAR в %AggreGate Server Installation Folder/plugins/context, когда AggreGate Server не запущен

  • Скопируйте файл WAR в %AggreGate Server Installation Folder/admin, когда AggreGate Server не запущен

  • Запустите AggreGate Server

  • Выполните требования для веб-приложения

Обратите внимание, что после первого запуска веб-приложение будет распаковано из файла WAR в папку с подходящим именем. Веб-сервер работает с нераспакованным приложением из папки. Таким образом, если файл WAR меняется, удалите папку со старой версией приложения до запуска AggreGate Server.

Создание веб-приложения требует дополнительные файлы в пути сборки в дополнение к aggregate-api.jar и aggregate-api-libs.jar:

  • extensions-libs.jar может быть найден в %AggreGate Server Installation Folder/jar

  • server-core.jar может быть найден в %AggreGate Server Installation Folder/jar

  • webserver.jar может быть найден в %AggreGate Server Installation Folder/plugins/contexts