Variant 28254
- Все результаты проверки должны сохраняться в базе данных под управлением СУБД PostgreSQL.
- Для доступа к БД необходимо использовать Spring Data.
Переписать приложение из предыдущей лабораторной работы с использованием следующих технологий:
Уровень back-end должен быть основан на Spring. Уровень front-end должен быть построен на React + Redux (необходимо использовать ES6 и JSX) с использованием набора компонентов Belle Взаимодействие между уровнями back-end и front-end должно быть организовано посредством REST API. Приложение по-прежнему должно включать в себя 2 страницы - стартовую и основную страницу приложения. Обе страницы приложения должны быть адаптированы для отображения в 3 режимах:
"Десктопный" - для устройств, ширина экрана которых равна или превышает 1169 пикселей. "Планшетный" - для устройств, ширина экрана которых равна или превышает 749, но меньше 1169 пикселей. "Мобильный"- для устройств, ширина экрана которых меньше 749 пикселей. Стартовая страница должна содержать следующие элементы:
"Шапку", содержащую ФИО студента, номер группы и номер варианта. Форму для ввода логина и пароля. Информация о зарегистрированных в системе пользователях должна храниться в отдельной таблице БД (пароль должен храниться в виде хэш-суммы). Доступ неавторизованных пользователей к основной странице приложения должен быть запрещён. Основная страница приложения должна содержать следующие элементы:
Набор полей ввода для задания координат точки и радиуса области в соответствии с вариантом задания: Radio {'-5','-4','-3','-2','-1','0','1','2','3'} для координаты по оси X, Spinner (-5 ... 3) для координаты по оси Y, и Radio {'-5','-4','-3','-2','-1','0','1','2','3'} для задания радиуса области. Если поле ввода допускает ввод заведомо некорректных данных (таких, например, как буквы в координатах точки или отрицательный радиус), то приложение должно осуществлять их валидацию. Динамически обновляемую картинку, изображающую область на координатной плоскости в соответствии с номером варианта и точки, координаты которых были заданы пользователем. Клик по картинке должен инициировать сценарий, осуществляющий определение координат новой точки и отправку их на сервер для проверки её попадания в область. Цвет точек должен зависить от факта попадания / непопадания в область. Смена радиуса также должна инициировать перерисовку картинки. Таблицу со списком результатов предыдущих проверок. Кнопку, по которой аутентифицированный пользователь может закрыть свою сессию и вернуться на стартовую страницу приложения. Дополнительные требования к приложению:
Все результаты проверки должны сохраняться в базе данных под управлением СУБД PostgreSQL. Для доступа к БД необходимо использовать Spring Data.
Вопросы к защите лабораторной работы:
- Платформа Java EE. Спецификации и их реализации.
- Принципы IoC, CDI и Location Transpanency. Компоненты и контейнеры.
- Управление жизненным циклом компонентов. Дескрипторы развёртывания.
- Java EE API. Виды компонентов. Профили платформы Java EE.
- Компоненты EJB. Stateless & Stateful Session Beans. EJB Lite и EJB Full.
- Работа с электронной почтой в Java EE. JavaMail API.
- JMS. Реализация очередей сообщений. Способы доставки сообщений до клиента. Message-Driven Beans.
- Понятие транзакции. Управление транзакциями в Java EE. JTA.
- Веб-сервисы. Технологии JAX-RS и JAX-WS.
- Платформа Spring. Сходства и отличия с Java EE.
- Модули Spring. Архитектура Spring Runtime. Spring Security и Spring Data.
- Реализация IoC и CDI в Spring. Сходства и отличия с Java EE.
- Реализация REST API в Java EE и Spring.
- React JS. Архитектура и основные принципы разработки приложений.
- Компоненты React. State & props. "Умные" и "глупые" компоненты.
- Разметка страниц в React-приложениях. JSX.
- Навигация в React-приложениях. ReactRouter.
- Управление состоянием интерфейса. Redux.
- Angular: архитектура и основные принципы разработки приложений.
- Angular: модули, компоненты, сервисы и DI.
- Angular: шаблоны страниц, жизненный цикл компонентов, подключение CSS.
- Angular: клиент-серверное взаимодействие, создание, отправка и валидация данных форм.
- Установка WildFly
- Деплой лабы
- Проброс портов для гелиоса
- Запуск в фоновом режиме
- Установка вашего portbase
- Установка datasource
-
Создаём домен для лабы:
$ asadmin create-domain --domaindir ~/glass --portbase 41414 lab2где:~/glass-- путь до каталога, где вы хотите разместить свою лабу;41414- число, от которого будут отсчитываться номера портов созданного домена. Проявите фантазию в выборе, чтоб не пересечься с другими студентами;lab2- название католога для веб-приложения (лабы).
Сервер будет сконфигурирован. Заскриньте терминал: эти данные вам ещё понадобятся. Примерный вывод:
Using port 41462 for Admin.
Using port 41494 for HTTP Instance.
Using port 41490 for JMS.
Using port 41451 for IIOP.
Using port 41495 for HTTP_SSL.
Using port 41452 for IIOP_SSL.
Using port 41453 for IIOP_MUTUALAUTH.
Using port 41500 for JMX_ADMIN.
Using port 41480 for OSGI_SHELL.
Using port 41423 for JAVA_DEBUGGER.
- Запускаем созданный домен:
$ asadmin start-domain --domaindir ~/glass lab2(проверить его статус можно командой:$ asadmin list-domains --domaindir ~/glass) - Так-как домены Glassfish недоступны снаружи, то необходимо пробросить порты через SSH-туннель. Заходим в консоль с своей машины и вводим:
ssh -fNL 41462:127.0.0.1:41462 имяПользователяр@se.ifmo.ru -p 2222После этого заходим на [127.0.0.1:41462] в браузере - должна отобразиться страница с приветствием Glassfish. - Логинимся, деплоим приложение на вкладке application и пробрасывет порт для него (повторить пункт 3 с портом HTTP Instance).
Другие команды:
$ asadmin stop-domain --domaindir ~/glass lab2 - остановить домен
$ asadmin delete-domain --domaindir ~/glass lab2 - удалить домен
