
- •Введение
- •1 Тема 1. Предметная область и терминология РСОС
- •1.1 Этапы развития распределенных систем
- •1.1.1 Классификация систем обработки данных
- •1.1.2 Распределенные вычислительные сети
- •1.1.3 Объектные распределенные системы
- •1.2 Становление систем с сервис-ориентированной архитектурой
- •1.2.1 Развитие web-технологий
- •1.2.2 Развитие концепции SOA
- •1.3 Современные парадигмы сервис-ориентированных архитектур
- •1.3.1 Эталонная модель SOA
- •1.3.2 Модель Захмана
- •1.3.3 Концепция среды открытой системы
- •1.3.4 Бизнес-парадигма модели SOA
- •1.4 Программная платформа Java Enterprise Edition
- •1.4.1 Контейнеры и компоненты Java EE
- •1.4.2 Служебные сервисы контейнеров
- •1.4.3 Артефакты контейнеров
- •1.4.4 Аннотации и дескрипторы развертывания
- •1.4.5 Управляемые компоненты платформы Java EE
- •1.5 Инструментальные средства реализации РСОС
- •1.5.1 Сервера приложений
- •1.5.2 Микросервисы
- •1.5.3 Apache Maven — сетевая сборка приложений
- •1.5.4 Eclipse Enterprise Edition
- •1.5.5 Тестовый пример
- •1.6 Заключение по первой главе
- •1.6.1 Итоги теоретических построений первой главы
- •1.6.2 Тематический план последующих глав
- •Вопросы для самопроверки
- •2 Тема 2. Использование компоненты JSF контейнера Web
- •2.1.1 Языки HTML, JavaScript и протокол HTTP
- •2.1.2 Серверные технологии PHP и HttpServlet
- •2.1.3 Технология AJAX и компонента JavaServer Faces
- •2.2 Шаблон проектирования MVC
- •2.2.1 Контроллер FacesServlet и жизненный цикл запроса
- •2.2.2 Контекст состояния запроса FacesContext
- •2.2.3 Модель в виде компонентов-подложек
- •2.2.4 Представление (View) средствами Facelets
- •2.2.5 JSF OmniFaces
- •2.3 Реализация тестового примера средствами JSF
- •2.3.1 Создание Facelets-шаблона изучаемой дисциплины
- •2.3.2 Прямая реализация тестового примера
- •2.4 Реализация уровня интерфейса сервисов
- •2.4.2 Компонента Users с ЖЦ @ApplicationScoped
- •2.4.3 Компонента RSOS с ЖЦ @SessionScoped
- •2.4.4 Компоненты-подложки с ЖЦ @RequestScoped
- •2.4.5 Приложение авторизации пользователя
- •2.4.6 Компонента подзаголовка проекта
- •2.4.7 Компонента меню лабораторных работ
- •2.4.8 Второй вариант меню лабораторных работ
- •Вопросы для самопроверки
- •3 Тема 3. Современные способы доступа к данным
- •3.1 Учебная инфраструктура темы
- •3.1.1 Учебная задача Letters (Письма)
- •3.1.2 Корпоратиные EJB-компоненты
- •3.1.3 Тестовый HttpServlet проекта lab4
- •3.1.4 Инфраструктура сервера TomEE и СУБД Derby
- •3.2 Технология JPA
- •3.2.1 Сущности
- •3.2.2 Объектно-реляционное отображение
- •3.2.3 Манеджер сущностей
- •3.2.4 Пример использования не-JTA-типа транзакций
- •3.3 Транзакции управляемые контейнером
- •3.3.1 Объектно-ориентированные запросы Criteria API
- •3.3.2 Реализация EJB-компонента с JTA-типом транзакций
- •3.3.3 Реализация JPA-сервлета
- •Вопросы для самопроверки
- •4 Тема 4. Обработка документов XML и JSON
- •4.1 Технология JAXB
- •4.1.1 Программное обеспечение технологии JAXB
- •4.1.2 Аннотации для связывания объектов Java
- •4.1.3 Преобразование объекта Java в документ XML
- •4.2 Технология JSON
- •4.2.1 Программное обеспечение технологии JSON
- •4.2.2 Преобразование объекта Java в документ JSON
- •4.2.3 Пример представления JSON на уровне классов
- •4.2.4 Выводы по результатам изучения главы 4
- •Вопросы для самопроверки
- •5 Тема 5. Web-службы SOAP
- •5.1.1 Протоколы и языки Web-служб
- •5.1.2 Краткое описание языка WSDL
- •5.1.3 Краткое описание протокола SOAP
- •5.1.4 Необязательный реестр Web-служб — UDDI
- •5.1.5 Программные пакеты Java EE, обслуживающие SOAP
- •5.2 Создание Web-служб SOAP
- •5.2.1 Подготовка проекта lab7
- •5.2.2 Аннотации поставщика Web-сервиса
- •5.2.3 Обработка исключений поставщика Web-сервиса
- •5.2.4 Обработка контекста Web-сервиса
- •5.3 Создание потребителя Web-службы SOAP
- •5.3.1 Аннотации для потребителей сервиса
- •5.3.2 Использование утилиты wsimport
- •5.3.3 Реализация тестового примера
- •5.3.4 Выводы по результатам изучения главы 5
- •Вопросы для самопроверки
- •6 Тема 6. Web-службы в стиле REST
- •6.1 Основные положения технологии RESTful
- •6.1.1 Ресурсы, URI, представления и адресуемость
- •6.1.2 Протокол HTTP
- •6.1.3 Языки WADL и HAL
- •6.1.4 Технология JAX-RS
- •6.2 Реализация Web-службы в стиле REST
- •6.2.1 Преобразование сущности Letter
- •6.2.2 Реализация EJB-компоненты Lets9
- •6.2.3 Получение списка записей в формате XML
- •6.2.4 Получение записи по номеру индентификатора
- •6.2.5 Добавление новой записи
- •6.3 Вызов Web-служб в стиле REST
- •6.3.1 Инструментальные средства потребителя сервиса
- •6.3.2 Полная реализация RESTfull-сервиса
- •6.3.3 Шаблон реализации потребителя сервиса
- •6.3.4 Клиент, реализующий методы GET и POST
- •6.3.6 Клиент, реализующий методы DELETE и PUT
- •Вопросы для самопроверки
- •Заключение
- •Список использованных источников
- •Алфавитный указатель

Рисунок 1.19 — Результат отправки на сервер двух сообщений
Теперь перейдем к выводам по результатам первой главы.
1.6 Заключение по первой главе
Дисциплина «Распределенные сервис-ориентированные системы» содержит знания накопленные социумом в результате диалектического развития двух альтернативно направленных процессов:
−нисходящего процесса проектирования, отражающего общее стремление иметь и использовать целевые масштабные информационные системы;
−восходящего процесса реализации, отражающего общее стремление создавать эффективные и управляемые системы.
Изучение любой дисциплины, проходящей в рамках собственного учебного процесса, формируются свои проекции (видения) на указанные выше процессы проектирования и реализации систем.
Традиционно считается, что процессы проектирования яляются концептуально более главными чем процессы реализации, поскольку они отражают целевые установки по достижению нужного результата. Такой же традиции придерживается и структура учебного материала данного пособия, где первая глава
53

отражает теоретические построения связанные с процессами проектирования масштабных информационных систем, а последующие главы раскрывают отдельные процессы реализации таких систем.
1.6.1 Итоги теоретических построений первой главы
Основные теоретические построения распределенных сервис-ориентированных систем (РСОС) сосредоточены в первых трех подразделах.
Подраздел 1.1 рассматривает этапы развития распределенных систем, которые в классическом варианте ограничены объектным подходом и достаточно подробно изучены в бакалаврском курсе «Распределенные вычислительные системы». Важность этой части учебного материала определяет явное осознание проблем, которые были вызваны восходящими процессами реализации объектных систем.
Подраздел 1.2 рассматривает период становления РСОС, который связан с развитием процессов реализации Web-систем, занимающих в свое время альтернативную позицию по отношению к объектному подходу. Особая важность этой части учебного материала — классическое представление об архитектуре SOA, появление протокола SOAP и реализация РСОС первого поколения.
Подраздел 1.3 рассматривает кризисную часть концепции РСОС, которая связана с построением универсальной модели SOA. Здесь изложены четыре точки зрения: эталонная модель SOA, модель Захмана, модель СОС POSIX и бизнес-парадигма модели SOA, отражающая современную тенденцию развития РСОС.
Основные теоретические построения прикладного аспекта реализации РСОС сосредоточены в следующих двух подразделах.
Подраздел 1.4, посвященный программной платформе Java EE, раскрывает общий теоретический подход контейнерной архитектуры распределенных систем, обеспечивающий достаточно приемлемую реализацию сложных широко масштабируемых информационных систем. В частности, на этой платформе проведена реализация многих Web-сервисных систем. В силу отсутствия значимых альтернатив, эта платформа выбрана в качестве концептуальной и технологической основы изучаемой дисциплины.
Подраздел 1.5 описывает инфраструктурную часть учебного процесса изучаемой дисциплины, которая посредством инструментальных средств сервера приложений Apache TomEE, IDE Eclipse EE и СУБД Apache Derby, обеспечивает разработку и исследование приложений РСОС.
54

1.6.2 Тематический план последующих глав
Теоретический материал первой главы дает только общее концептуальное представление о предметной области изучаемой дисциплины. Его еще недостаточно для построения даже простейших Web-сервисов, поэтому последующие три главы посвящены изучению различных аспектов Web-технологий, обеспечиваемых программной платформой Java EE.
Глава 2 концентрирует внимание на компоненте JSF (JavaServer Faces). На ее основе успешно реализуется не только уровень бизнес-логики сервисных систем, но и уровень интерфейса сервисов (см. пункт 1.3.4, рисунок 1.12). Сама реализация компоненты JSF основана на последних технологических достижениях платформы Java EE, что делает ее хорошим учебным примером, раскрывающим на нужном уровне концепции создания и использования идеи самих программных компонент, управляемых контенерами сервера.
Глава 3 дополняет учебный матерал главы 2 в плане изучения современных технологий хранения и использования данных. В ней рассматриваются вопросы программирования взаимодействия с реляционными СУБД, отличные от использования языка SQL. В этом плане программная платформа Java EE содержит инструменты работы с объектными сущностями посредством сервиса Java Persistence API (JPA), поддерживающего «механизмы» объектно-реляционного отображения (ORM, Object-Relational Mapping).
Глава 4 завершает описание различных технологий платформы Java EE, необходимых для реализации Web-сервисов. Прежде всего это касается работы с представлениями в формате XML, составляющих основу протокола SOAP. Дополнительно рассматриваются популярные в настоящее время спецификации представления JSON.
Основной учебный материал данной дисциплины, посвященный системам РСОС, изложен в последних двух главах.
Глава 5 посвящена классическому представлению Web-сервисных систем, основанных на протоколе SOAP. Здесь рассмотрены интеграционные процессы объединения различных сервисов, широко известные как business-to- business (B2B) и Enterprise Application Integration (EAI). Подробно обсуждаются элементы такой интеграции, основанные на спецификациях XML, WSDL, SOAP и UDDI.
Глава 6 представляет учебный материал, демонстрирующий технологию Web-служб в стиле REST. Данная технология считается современной, перспективной и лишенной многих недостатков, которые присущих классическому подходу на базе протокола SOAP.
55

Учебные примеры, приведенные в данной дисциплине, не претендуют на эталонные реализации компонент РСОС.
Все учебные примеры данного методического пособия, включая тестовый пример предыдущего подраздела, имеют своей целью демонстрацию технологических возможностей программной платформы Java EE или демострацию иных возможностей распределенных сервис-ориентированных систем. Даже, если в тексте пособия приводится некоторая прикладная интерпретация решаемой задачи, ее не следует рассматривать как эталонное решение, требующее подражания. Более того, прикладная часть приведенных примеров сознательно упрощена для лучшего понимания технологических аспектов рассматриваемых вопросов.
Несмотря на высокую переносимость программного обеспечения разработанного на языке Java, следует максимально внимательно относиться к версиям используемых компонент.
Данное замечание следует рассматривать как формальное предупреждение, поскольку современные тенденции разработки ПО ориентированы на использование инструментальных средств поддерживающих версионность используемых библиотек и иных внешних программных продуктов.
56