Рассматриваемые темы Технология EJB Типы EJB Вызов EJB Сборка и развертывание EJB- приложения 2-1
Технология EJB EJB в платформе Java EE 2-2
Технология EJB Спецификации EJB 2-3
Технология EJB Стандартизация компонентной архитектуры для объектно- ориентированных и распределенных бизнес-приложений и упрощение их разработки Поддержка создания и использования web-сервисов Write once, run anywhere Совместимость с протоколами CORBA Цели создания EJB 2-4
Технология EJB Системные сервисы (транзакции, авторизация) – забота контейнера, а не разработчика Возможность построения приложения из существующих модулей Разработчик может сфокусировать на реализации бизнес-логики, а не заниматься созданием инфраструктурного кода Декларативная модель разработки Преимущества EJB 2-5
Технология EJB Подключение системных служб контейнера 2-6
Технология EJB Контейнер перехватывает взаимодействие между клиентом и компонентом и добавляет инфраструктурный код службы Службы: Авторизация Транзакции Жизненного цикла компонент Сервисы именования Системные службы контейнера 2-7
Технология EJB Разработчик описывает, как контейнер должен взаимодействовать с компонентом, при помощи: Аннотаций XML-файлов Декларативная модель 2-8
Технология EJB Декларативная модель 2-9
Технология EJB Bean provider – разработчик компонент бизнес-логики Application Assembler – компоновщик компонент приложения в модули Deployer – разворачивает приложение EJB Server Provider – разработчик EJB- сервера Семь ролей при разработке EJB 2-10 см. далее
Технология EJB EJB Container Provider – разработчик контейнера EJB. Persistence Provider – разработчик реализации JPA System Administrator – администратор информационной инфраструктуры Семь ролей при разработке EJB 2-11
Технология EJB Семь ролей при разработке EJB 2-12
Рассматриваемые темы Технология EJB Типы EJB Вызов EJB Сборка и развертывание EJB- приложения 2-13
Типы EJB Session Bean Stateless Stateful Message-Driven Bean (MDB) Entity Objects Enterprise Bean Objects 2-14
Типы EJB Выполняет обработку запроса одного клиента Инкапсулирует бизнес-функционал Экземпляры хранятся в памяти Уничтожаются при остановке контейнера Имеет локальный и/или удаленный бизнес-интерфейс Session Bean 2-15
Типы EJB Не имеет внутреннего состояния Обслуживает множество клиентов Может реализовывать web-сервис Stateless Session Bean 2-16
Типы EJB Имеет внутреннее состояние (статус «общения» с клиентом) и хранит его, пока: Клиент окончит «общение» Наступит таймаут Остановится контейнер Обслуживает единственного клиента Stateful Session Bean 2-17
Типы EJB Модуль, рассчитывающий цену местного телефонного вызова – Stateless Модуль бронирования авиа- билета на сайте авиакомпании – Stateful Stateful vs Stateless 2-18
Типы EJB Выполняют задачи обработки JMS-сообщений от клиента Асинхронны Недолговечны Могут изменять данные в БД, но сами данными не являются Не имеют состояния Message-Driven Beans 2-19
Типы EJB Обычно – представляют собой сущности из предметной области приложения Устойчивы (хранимы) «Выживают» при падении контейнера Обязаны иметь первичный ключ Entity Objects (сущности) 2-20
Типы EJB Управляет сущностями Сущности могут быть «отсоединены» от менеджера, переданы куда-либо для каких-то действий, и «присоединены» обратно с синхронизацией их состояния в БД Может существовать отдельно от EJB- контейнера Entity Manager 2-21
Рассматриваемые темы Технология EJB Типы EJB Вызов EJB Сборка и развертывание EJB- приложения 2-22
Вызов EJB Web-клиент Application-клиент Web service-клиент RMI-клиент EJB-клиенты 2-23
Вызов EJB Web клиент 2-24
Вызов EJB Web клиент Легче, но нет системных служб EJB-контейнера 2-25
Вызов EJB Application клиент 2-26
Вызов EJB Web service клиент 2-27
Вызов EJB RMI клиент Клиент сам должен сделать поиск в JNDI Нет клиентского контейнера 2-28
Вызов EJB Получение ссылки на remote-интерфейс 2-29
Вызов EJB Использование Dependency private static Cart cart;... public static void main(String... args) { System.out.println("Result: " + cart.getTotal()); } 2-30 MyEJB.java
Вызов EJB Получение ссылки на remote-интерфейс Cart cart; try { // получаем контекст InitialContext context = new InitialContext(); // получаем ссылку на remote-интерфейс Cart c = (Cart) context.lookup("Cart/remote"); // делаем что-то полезное } catch (NamingException ex) { ex.printStackTrace(); } 2-31 MyEJBRmi.java
Рассматриваемые темы Технология EJB Типы EJB Вызов EJB Сборка и развертывание EJB- приложения 2-32
Сборка и развертывание Бизнес-интерфейс Реализация Компиляция и юнит-тесты Конфигурирование (написание deployment-descriptor'ов) и сборка (упаковка) Развертывание и тестирование Цикл разработки EJB-приложения 2-33
Сборка и развертывание Бизнес-интерфейс // локальный public interface CartLocal { /** * Что-то полезное */ double getTotal(); } 2-34 CartLocal.java
Сборка и развертывание Реализация // локальный public class CartBean implements CartLocal { /** * Что-то полезное */ double getTotal() { return 110.0; } 2-35 CartBean.java
Сборка и развертывание Конфигурирование Cart ejb-jar.xml
Сборка и развертывание Конфигурирование Cart 2-37 sun-ejb-jar.xml
Сборка и развертывание Модуль Web-приложения (WAR) Модуль EJB JAR Application-клиент (JAR) Архив ресурсов (RAR) Java EE – приложение (EAR) Типы модулей EJB-приложения 2-38
Сборка и развертывание Структура EJB-модуля 2-39 /package/name/EJBClasses.class /META-INF/ejb-jar.xml /META-INF/sun-ejb-jar.xml ejb.jar
Сборка и развертывание Командная строка Web-консоль JSR 88 Apache Ant IDE Способы развертки модулей 2-40
Выводы Технология EJB – стандарт для создания объектно-ориентированных распределенных приложений EJB Session Beans Stateful Stateless Message-Driven Beans Entity Objects Выводы по технологии EJB 2-41
Выводы EJB клиенты Web клиент Application клиент Web Service клиент RMI-клиент Вызов EJB Dependency Injection Поиск в JNDI-реестре Выводы по технологии EJB 2-42
Практика Сборка и развертывание EJB-приложения. Упражнение 2-43