Программирование на платформе Java EE. Разработка компонентов на основе технологии Enterprise JavaBeans Часть I
Цель курса
Необходимые знания
Используемый инструментарий
Общий тематический план курса
Основные принципы и понятия
Тема 1. Введение в Java EE
Платформа Java
Структура платформы Java SE
Редакции платформы Java
Платформа Java Enterprise Edition
Архитектура Java EE приложения
Архитектура Java EE приложения
Технология Enterprise JavaBeans (EJB)
Основные термины
Основные термины
Структура Java EE сервера
Службы контейнера Java EE
Типы EJB-компонентов
API для Java EE приложений
Общая схема разработки Java EE приложений
Основные роли жизненного цикла EJB-приложения
Когда можно использовать EJB
Преимущества разработки на основе EJB
Преимущества разработки на основе EJB
2. Реализация сеансовых компонентов
Сеансовый компонент
Клиенты сеансового компонента
Разработка сеансового компонента
Разновидности сеансовых компонентов
Выбор вида сеансового компонента
Основные критерии выбора вида сеансового компонента
Определение сеансового компонента
Определение сеансового компонента
Определение сеансового компонента
Соглашения по архивации компонентов:
Пакетирование сеансовых компонентов
Пакетирование сеансовых компонентов
Дескриптор поставки
Пример дескриптора поставки
Развёртывание сеансовых компонентов
EJB: использование аннотаций
3. Доступ к сеансовым компонентам
JNDI пространства имён
Пример определения JNDI
Настройка JNDI
Поиск ресурса
Ссылки на ресурсы и зависимости
Ссылки на ресурсы и зависимости
Разработка клиента компонента
4. Дополнительные сведения о сеансовых компонентах
Особенности методов жизненного цикла
Жизненный цикл сеансового компонента
Жизненный цикл сеансового компонента
EJB: жизненный цикл Stateless компонента
Асинхронные вызовы
Асинхронные вызовы
5. Сеансовая компонента синглтон
Заключение
1.16M
Category: programmingprogramming

Программирование на платформе Java EE. Разработка компонентов на основе технологии Enterprise JavaBeans (часть I)

1. Программирование на платформе Java EE. Разработка компонентов на основе технологии Enterprise JavaBeans Часть I

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ВЫСШАЯ ИНЖЕНЕРНАЯ ШКОЛА
Ю.Д.Заковряшин
Программирование на платформе Java EE.
Разработка компонентов на основе технологии Enterprise
JavaBeans
Часть I
Санкт-Петербургский государственный политехнический университет
2016

2. Цель курса

Основная задача: формирование компетенций,
необходимых для разработки бизнес компонентов с
использованием технологии Enterprise JavaBeans
Ограничения курса
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
2/

3. Необходимые знания

знание синтаксиса языка Java в версии не ниже JDK 1.5
знание процесса разработки программ на платформе
Java
знание Java API, используемого для разработки сетевых
приложений и приложений с доступом к базам данных
общее понимание архитектуры распределённых
приложений
представление о требованиях, предъявляемых к
распределённым приложениям масштаба предприятия
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
3/

4. Используемый инструментарий

Java EE 7 Software Development Kit
http://www.oracle.com/technetwork/java/javaee/downloads/
NetBeans IDE и необходимые plugin-ы
http://www.netbeans.org/downloads/
Настройка среды
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
4/

5. Общий тематический план курса

Основные принципы и понятия
Платформа Java EE
Сеансовые компонент
Компоненты, управляемые сообщениями
Использование служб таймера
Реализация классов и методов перехватчиков
Реализация транзакций
Реализация безопасности
Использование технологии EJB - рекомендации
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
5/

6. Основные принципы и понятия

Распределённое приложение
Корпоративное приложение
Основные требования к корпоративным
приложениям
Принципы разработки корпоративных приложений
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
6/

7. Тема 1. Введение в Java EE

Платформа Java
Платформа Java Enterprise Edition (Java EE)
Архитектура Java EE приложения
Службы контейнера Java EE
Типы компонент EJB
Легковесный контейнер EJB
Преимущества разработки корпоративных приложений
на основе Java EE
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
7/

8. Платформа Java

Платформа JavaTM включает:
спецификацю языка Java
стандартные утилиты
стандартные пакеты (Java API)
виртуальную Java-машину (JVM)
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
8/

9. Структура платформы Java SE

Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
9/

10. Редакции платформы Java

Java Platform, Standard Edition ( Java SE)
Java Platform, Enterprise Edition ( Java EE)
Java Platform, Micro Edition (Java ME)
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
10/

11. Платформа Java Enterprise Edition

Является “надстройкой“ над платформой Java SE
Облегчает разработку приложений, которые являются:
распределёнными
крупномасштабными
многоуровневыми
масштабируемыми
надёжными
безопасными
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
11/

12. Архитектура Java EE приложения

Типичное Java EE приложение содержит:
клиентский уровень
промежуточный уровень, который обычно реализует
бизнес-логику приложения и обеспечивает интернетдоступ к службам приложения
уровень данных (Enterprise Information System - EIS)
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
12/

13. Архитектура Java EE приложения

Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
13/

14. Технология Enterprise JavaBeans (EJB)

Enterprise JavaBeansTM (EJB) - стандартная
архитектура для разработки на основе платформы Java™
объектно-ориентированных приложений масштаба
предприятия (корпоративных приложений)
EJB поддерживает полный жизненный цикл
корпоративных приложений, написанных на языке Java
EJB поддерживает полный жизненный цикл webсервисов
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
14/

15. Основные термины

EJB-сервер определяется как логическое
устройство, которое обеспечивает инфраструктуру
(среду выполнения), необходимых для
функционирования EJB-компонентов
EJB-контейнер является специализированным
сервисом, который непосредственно обслуживает
работу EJB-компонента
EJB-модуль представляет собой набор EJBкомпонент и дескриптор развёртывания
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
15/

16. Основные термины

EJB-компонент - многократно используемый
программный компонент, обладающий возможностью
взаимодействия с аналогичными компонентами
EJB-компоненты обеспечивают функциональность на
стороне сервера
EJB-компонент может экспортировать свойства, методы
и события
EJB-компоненты можно относительно легко добавлять и
удалять из системы
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
16/

17. Структура Java EE сервера

Java EE сервер
EJB-контейнер
EJB-компонент
Web-контейнер
EJB-компонент
EJB
EJB-компонент
EJB-компонент
Системные службы
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
17/

18. Службы контейнера Java EE

Lifecycle Management: обеспечивает управление
жизненным циклом объекта
State Management: управляет состоянием объекта
Security: обеспечивает выполнение проверок
безопасности
Transactions: позволяет управлять транзакциями по
требованию EJB-компонента
Persistence: обеспечивает управление сохранением
данных.
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
18/

19. Типы EJB-компонентов

Сеансовые (Session Beans) компоненты реализуют
логику клиентского приложения, обычно не имеют
устойчивого состояния
Управляемые сообщениями (Message Driven
Beans) — определяют асинхронную реакцию
приложения на определённые события в системе
Объектные компоненты (Entity Beans)
(опционально) представляют собой данные и имеют
устойчивое состояние
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
19/

20. API для Java EE приложений

Разработка EJB-компонентов основывается на
специализированных пакетах:
javax.ejb
javax.annotation
Также используются:
javax.naming (JNDI API)
javax.jms (Java Message Service API)
...
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
20/

21. Общая схема разработки Java EE приложений

Определение интерфейсов
Разработка собственно компонента, реализующего
необходимые интерфейсы
Разработка дополнительных классов
Подготовка EJB JAR файла
Развертывание приложения
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
21/

22. Основные роли жизненного цикла EJB-приложения

Основные роли жизненного цикла EJBприложения
Роли обеспечения инфраструктуры:
EJB Server Provider;
EJB Container Provider.
Роли разработки приложений:
Enterprise Bean Provider;
Application Assembler.
Роли поставки и настройки:
Deployer;
System administrator.
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
22/

23. Когда можно использовать EJB

При необходимости обеспечить:
многопользовательский удалённый доступ
масштабируемость
безопасность и ограничение доступа к данным
целостность и сохранность данных
поддержку распределённых транзакций
поддержку событий
хорошую сопровождаемость
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
23/

24. Преимущества разработки на основе EJB

Enterprise JavaBeansTM (EJB) следует общему
принципу Java: “написанное однажды – работает
везде”. Разработанные EJB-компоненты могут
разворачиваться на множестве платформ без
изменения кода или перекомпиляции
Технология EJB избавляет разработчика от
необходимости использовать низкоуровневое API для
выполнения рутинных операций
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
24/

25. Преимущества разработки на основе EJB

Для корпоративных приложений:
повышается производительность
повышается надёжность функционирования
повышается возможность масштабирования
снижаются затраты на разработку
снижаются затраты на сопровождение
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
25/

26. 2. Реализация сеансовых компонентов

Сеансовые компоненты
Три типа сеансовых компонент
Выбор правильной сеансовой компоненты при
заданном бизнес-ограничении
Создание сеансовых компонент
Пакетирование и развертывание сеансовых
компонент
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
26/

27. Сеансовый компонент

Типичный сеансовый компонент:
в каждый конкретный момент времени представляет на
стороне сервера одного и только одного клиента
не сохраняет своего состояния
может представлять web-сервис
может участвовать в транзакции
не представляет непосредственно разделяемые данные из
БД, но может получать к ним доступ и обновлять их
может иметь произвольный по продолжительности жизненный
цикл
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
27/

28. Клиенты сеансового компонента

Локальный клиент должен работать в том же адресном
пространстве (на той же JVM), может являться другим
компонентом или web-компонентом. Для локального
клиента расположение компонента не может быть
прозрачным.
Удаленный клиент – может работать на удаленной JVM и
являться клиентским приложением, другим EJBкомпонентом, web-компонентом. Для удаленного клиента
действительное положение компонента должно быть
прозрачным.
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
28/

29. Разработка сеансового компонента

Сеансовый компонент может реализовывать:
локальный интерфейс
удалённый интерфейс
Сеансовый компонент может использовать:
вспомогательные интерфейсы
вспомогательные классы
внешние ресурсы
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
29/

30. Разновидности сеансовых компонентов

Сеансовые (Session Beans) компоненты
подразделяются на:
stateless (без сохранения состояния)
stateful (с поддержкой сессии)
singleton («одиночка» начиная с версии 3.1)
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
30/

31. Выбор вида сеансового компонента

Необходимо учитывать различия сеансовых
компонентов, т.к. они:
имеют разный жизненный цикл
имеют разные возможные состояния
по разному используются клиентами
могут реализовывать разную логику обработки
запросов
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
31/

32. Основные критерии выбора вида сеансового компонента

Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
32/

33. Определение сеансового компонента

Определение интерфейса для последующей имплементации
EJB-компонентами
@Remote
public interface name {
// method declaration
}
@Local
public interface name {
// method declaration
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
33/

34. Определение сеансового компонента

Определение класса сессионного компонента без
наследования интерфейса
Методы такого класса могут вызываться локальными
клиентами
Аннотация определяет конкретную разновидность компонента
@Annotation
public class className {
// method realization
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
34/

35. Определение сеансового компонента

Класс сессионного компонента может наследовать любой
интерфейс и аннотировать его как EJB-интерфейсы
Для этого обычно используются аннотации:
@Remote
@Local
@Annotation (value={interfaceName.class})
public class className implements interfaceName{
// method realization
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
35/

36. Соглашения по архивации компонентов:

Java EE приложения хранятся в архивах с расширением .ear
EJB-модули хранятся в архивах с разрешением .jar
Web-приложения хранятся в архивах с разрешением .war
Дополнительные файлы и файлы ресурсов хранятся в архивах
с расширением .jar
Разделяемые пакеты хранятся в архивах с разрешением .jar и
в подкаталоге /lib
Клиенты приложения с Main-Class хранятся в архивах с
разрешением .jar
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
36/

37. Пакетирование сеансовых компонентов

Откомпилированные файлы компонентов заносятся в
специально структурированный архив с расширением jar
Данный архив компонентов:
непосредственно в корне архива имеет специальную каталог
META-INF для размещения конфигурационных файлов таких как
MANIFEST.MF
может содержать дескриптор поставки в каталоге META-INF
в отдельном каталоге содержит откомпилированные
компоненты
может содержать дополнительные каталоги со
вспомогательными классами и файлами
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
37/

38. Пакетирование сеансовых компонентов

Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
38/

39. Дескриптор поставки

Дескриптор поставки представляет собой файл в формате
XML, содержащий определение атрибутов EJB-компонентов
Дескриптор поставки размещается в подкаталоге META-INF.
Дескриптор поставки может хранить информацию:
о структуре компонентов (имя, тип и класс компонента, его
интерфейсы, параметры среды, ссылки на внешние ресурсы, тип
транзакции)
о правилах и особенностях развертывания компонентов.
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
39/

40. Пример дескриптора поставки

<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>MessageBean</ejb-name>
<mdb-connection-factory>
<jndi-name>
jms/JupiterConnectionFactory
</jndi-name>
</mdb-connection-factory>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
40/

41. Развёртывание сеансовых компонентов

Архив с компонентами должен развёртываться на Java EEсервере
Развёртывание может осуществляться:
штатными средствами IDE
встроенными средствами Java EE сервера
на основе процедурного описания, например с помощью
технологии ant
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
41/

42. EJB: использование аннотаций

@Resource(name="myDB", type=javax.sql.DataSource)
@Stateful public class ShoppingCartBean
implements ShoppingCart {
@Resource SessionContext ctx;
public Collection startToShop (String productName) {
...
DataSource productDB =
(DataSource)ctx.lookup("myDB");
Connection conn = myDB.getConnection():
...
}
...
}

43. 3. Доступ к сеансовым компонентам

Роль JNDI в установлении связи с EJB компонентами
Конфигурирование свойств JNDI окружения
Использование JNDI для поиска ресурса
Создание кода для получения ссылки на ресурс путём
внедрения (injection)
Создание клиента сеансовой компоненты
Создание фасада сеанса (session fasade)
Использование внедрения зависимости (dependency
injection) для указания на EJB
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
43/

44. JNDI пространства имён

Роль JNDI
Пакет javax.naming
Глобальное пространство имён:
java:global[/app-name]/module-name/bean-name[!fqn]
Пространство имён приложения:
java:app/module-name/bean-name[!fqn]
Модульное пространство имён:
java:module/bean-name[!fqn]
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
44/

45. Пример определения JNDI

package demo;
@Singleton(name="Demo")
@LocalBean
@Remote(demo.DemoRemote.class)
public class DemoBean { ... }:
Для модуля demo.jar определены следующие имена:
java:global/demo/Demo!demo.DemoBean
java:global/demo/Demo!demo.DemoRemote
java:app/demo/Demo!demo.DemoBean
java:module/demo!demo.DemoRemote
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
45/

46. Настройка JNDI

Настройка может осуществляться с помощью
конструктора класса
InitialContext(Hashtable<?,?> environment)
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, file:/tmp/tutorial");
Context ctx = new InitialContext(env);
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
46/

47. Поиск ресурса

Интерфейс Context и класс InitialContext
Поиск осуществляется с помощью методов класса
InitialContext:
lookup (...)
Object obj = ctx.lookup(name);
Регистрация объектов с помощью метода
bind(...)
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
47/

48. Ссылки на ресурсы и зависимости

Интерфейс SessionContext
Определение ресурсов
аннотация @Resource
public class DemoServlet extends HttpServlet {
@Resource(name="java:comp/DefaultDataSource")
private javax.sql.DataSource dsc;
...
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
48/

49. Ссылки на ресурсы и зависимости

Определение зависимостей
@javax.enterprise.context.RequestScoped
public class Demo { ... }
public class DemoServlet extends HttpServlet {
@Inject Demo d;
...
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
49/

50. Разработка клиента компонента

Разработка локального клиента
Разработка удалённого клиента
Создание фасада сессии
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
50/

51. 4. Дополнительные сведения о сеансовых компонентах

Связь между EJB контейнером и EJB компонентой
Жизненный цикл сеансовых компонент, обладающих и
не обладающих состоянием
Реализация методов жизненного цикла сеансовой
компоненты
Использование сеансовой компоненты для
осуществления асинхронной коммуникации
Тонкая настройка управления пакетированием и
развертыванием
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
51/

52. Особенности методов жизненного цикла

Методы жизненного цикла должны возвращать тип void и не
должны иметь параметров.
Метод @PostConstruct вызывается контейнером после
создания и настройки компонента, но до первого вызова бизнесметодов.
Метод @PreDestroy вызывается контейнером после завершения
метода, аннонсированного как @Remove, перед удалением
компонента из контейнера.
Метод @PostActivate вызывается контейнером после того, как
контейнер перевел компонент из пассивного состояния в
активное
Метод @PrePassivate вызывается контейнером перед
переводом компонента из активного состояния в пассивное.
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
52/

53. Жизненный цикл сеансового компонента

Создание компонента
Установление зависимостей
Методы жизненного цикла:
@PostConstruct, init() и ejbCreate<Method>
@PrePassivate() и @PostActivate()
@Remove() и @PreDestroy(
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
53/

54. Жизненный цикл сеансового компонента

Создание
Установление зависимостей
@PostConstruct()
@PreDestroy()
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
54/

55. EJB: жизненный цикл Stateless компонента

Создание
Установление зависимостей
@PostConstruct()
@PreDestroy()

56. Асинхронные вызовы

Особенности асинхронных вызовов
Область применения
Реализация асинхронных методов
Обработка исключений
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
56/

57. Асинхронные вызовы

@Asynchronous
public Future<Integer> foo (...) {
// do something
Integer result = ...;
return new AsyncResult<Integer>(result);
}
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
57/

58. 5. Сеансовая компонента синглтон

Преимущества и недостатки использования синглетонных
сеансовых компонент
Создание синглетонной сеансовой компоненты
Жизненный цикл синглетонной сеансовой компоненты
Реализация методов жизненного цикла синглетонной
сеансовой компоненты
Параллельный доступ к синглетону
Управление параллелизмом
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
58/

59. Заключение

Обобщающий обзор рассмотренных вопросов
Вопросы, требующие дополнительного рассмотрения
Вопросы к лектору
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
59/
English     Русский Rules