Веб-сервисы. SOA-based (Microservices) архитектура

Разработка проекта на вебинаре.
10 занятий раз в неделю

Старт по мере набора группы.


  • На тренинге подробно разбирается написание с нуля полнофункционального многомодульного Maven проекта: web-приложения, почтового сервиса и вспомогательных модулей с использованием Веб и REST сервисов (JAX-WS, JAX-RS), jQuery, Execution Framework, JavaMail, Apache Commons, AKKA, Spring Cloud Netflix и персистентностью данных c динамическим конфигурирование модулей по http и JMX.
  • Основное внимание будет уделяться способам решения многочисленных проблем разработки а также структурному (красивому и надежному) java кодированию и модульности приложения.
  • После каждого занятия предлагается домашнего задания, которое разбирается в начале следующего урока.

Требование к участникам: опыт программирования на Java. Базовые знания Maven. Для темы Spring Cloud Netflix необходимо знание Spring.

Ответы на вопросы


План вебинара

Занятие 1

SOA, Микросервисы

Платформа Java. Функциональное программирование.

Maven (основные принципы, предполагается какой-то опыт общения)

Создание проекта

Занятие 2

Создание/тестирование формы модуля Web

Веб-сервисы

Доработка веб-сервиса. Кастомизация WSDL.

Домашнее задание
1. Модифицировать Addressee для вывода в формате soa-ws2\mail-api\src\test\resources\Addressee.xml
2. Сделать схему Addressee.xsd, положить рядом с Addressee.xml
3. На основе JaxbSingleParser написать JUnit4 тест для проверки маршалинга/демаршалинга/валидации Addressee:
   2.1  Маршализовать new Addressee("Name", "name@mail.ru") и сравнить с Addressee.xml
   2.2  Демаршализовать Addressee.xml и сравнить с new Addressee("Name", "name@mail.ru")
   2.3  Провалидировать Addressee.xml
   2.4  Убедится в SAXParseException при валидации InvalidAddressee.xml

   Для чтения файлов использовать IOUtils.toString библиотеки commons-io%commons-io%2.4

4. Включить схему внутрь wsdl и опубликовать mailService на основе кастомизированной схемы.

Занятие 3

Разбор Домашнего Задания.

Клиент веб-сервиса.

JAX-WS Handlers.

Домашнее задание
1. Добавить в имплементацию сервиса логин/пароль.
2. Добавить в интеграционные тесты фазу pre-integration-test (запуска сервиса) и post-integration-test (shutdown).

Занятие 4

Basic Authorization.

Конфигурирование.

Отправка почты.

Домашнее задание
Реализовать аутентификацию через Soap Handler.

Занятие 5

Разбор ДЗ.

Добавляем файлы вложения. Mail-Service.

Загрузка файлов.

Домашнее задание
1. Дополнить интеграционные тесты проверкой на неавторизованный доступ.
2. Попробовать задать код ответа сервера в SoapServerSecurityHandler через MessageContext.HTTP_RESPONSE_CODE.
3. Пофиксить проблему отправки почты с пустыми subject и body.

Занятие 6

Персистентность.

REST веб сервис.

Домашнее задание
1. Дополнить REST сервис авторизацией (логин/ пароль те же, что и у веб сервиса).
2. Сделать JUnit на охранение/ чтение из базы.
3. Дополнить интеграционные тесты проверкой на неавторизованный доступ.

Занятие 7

Сохранение, отображение истории почты.

Асинхронность.

Домашнее задание
Исключить из MailWSClientIT.testSendMailAsync ожидание Thread.sleep.

Занятие 8

Сканирование истории почты

Домашнее задание
Сделать SecurityException через WebStateException.
Сделать читаемым отображение ошибок отправки почты.

Занятие 9

Динамическое конфигурирование. JMX

Домашнее задание
Добавить в конфигурацию модуля web параметр rowNumber (web.rowNumber = 10 в конфигурации)
Сделать его атрибутом JMX и выводить соответствующее rowNumber число строк таблицы истории почты.

Занятие 10

Асинхронность и маштабируемость. Concurrent and distributed applications toolkit AKKA

Постороение приложения на основе Spring Cloud Netflix


Для построения приложения будут использоваться инструменты промышленной java разработки:


Ресурсы: