Разбираемые темы:
1. Обзор платформы JEE
- обзор основных технологий JEE;
- распределенные компоненты EJB;
- внедрение зависимостей через CDI;
- работа с сообщениями через JMS;
- популярные серверы приложений (JBoss/WildFly, Glassfish, IBM WebSphere, Oracle WebLogic).
2. Архитектура EJB
- типы сессионных бинов;
- применение Singleton бинов;
- тестирование EJB бинов в контейнере Arquillian;
- сборка WAR, JAR и EAR архивов для публикации на сервере;
- деплой приложений на сервер.
3. Сессионные бины
- масштабируемость и отказоустойчивость бинов без состояния;
- интерфейсы @Local и @Remote;
- жизненный цикл бинов без состояния;
- пассивация и активация для бинов с состоянием;
- коллбэки для управления жизненным циклом;
- применение сервлетов для получения данных из EJB;
- интерсепторы для работы с EJB (аспектно-ориентированное программирование).
4. MDB бины
- преимущества работы с системами обмена сообщениями;
- отправка сообщений адресату, очереди;
- публикация/подписка на топики;
- подписка на JMS очередь;
- подписка на JMS топик;
- обработка сообщений с помощью Message Driven Bean.
5. Внедрение зависимостей через CDI
- преимущества инъекции зависимостей;
- применение Weld (реализация CDI) отдельно от серверов JEE и вместе с ними;
- продьюсеры и диспоузеры;
- интерсепторы в CDI;
- декораторы в CDI;
- работа с событиями и паттерн Observable в CDI.
6. Работа с JMS
- использование JEE сервера для работы с JMS;
- настройка WildFly, создание очередей и топиков;
- соединения и сессии для работы с JMS;
- асинхронная отправка и получение сообщений;
- использование ActiveMQ (режим без JEE сервера);
- использование JNDI для получения очереди или топика;
- заголовки и свойства сообщений;
- передача сообщений в режиме запрос-ответ;
- селекторы сообщений;
- возможности JMS 2.0;
- использование OpenMQ.
7. Использование JPA
- работа с сущностями, мэппинг классов в таблицы БД;
- типы доступа (через поле или свойство);
- конфигурация полей @Column и @Lob;
- стратегии генерации первичных ключей;
- отношения сущностей один-к-одному, один-ко-многим, многие-ко-многим;
- односторонние и двусторонние отношения;
- каскадирование операций;
- удаление сирот;
- ленивая загрузка отношений;
- встраиваемые классы и коллекции;
- стратегии мэппинга наследования классов;
- работа с EntityManager, основные операции;
- понятие persistence context, понятие подсоединенной и отсоединенной сущности;
- кэш 1-ого и 2-ого уровня, удаление данных из кэша;
- работа с транзакциями;
- декларативное управление транзакциями;
- оптимистическая и пессимистическая блокировка;
- настройка Persistence Unit с помощью persistence.xml;
- основы Spring Data;
- работа со Spring Data в JEE контейнере.