Разделы презентаций


Программирование на платформе Java EE. Разработка компонентов на основе

Содержание

6. Разработка Java EE приложений, использующих обмен сообщениями Обзор технологии JMS Архитектура JMS API Создание постановщика сообщений в очередь Создание получателя синхронных сообщенийЮ.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)/

Слайды и текст этой презентации

Слайд 1Программирование на платформе Java EE. Разработка компонентов на основе технологии

Enterprise JavaBeans Часть II
Санкт-Петербургский государственный политехнический университет
2016-2018
Ю.Д.Заковряшин
Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ВЫСШАЯ ИНЖЕНЕРНАЯ ШКОЛА

Программирование на платформе Java EE.  Разработка компонентов на основе технологии Enterprise JavaBeans  Часть IIСанкт-Петербургский государственный

Слайд 26. Разработка Java EE приложений, использующих обмен сообщениями
Обзор

технологии JMS
Архитектура JMS API
Создание постановщика сообщений

в очередь
Создание получателя синхронных сообщений

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

/

6. Разработка Java EE приложений, использующих обмен сообщениями  Обзор технологии JMS  Архитектура JMS API

Слайд 3Обзор технологии JMS
Назначение технологии
Особенности реализации на

Java платформе
Обзор пакета javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise

JavaBeans (EJB)
Обзор технологии JMS  Назначение технологии  Особенности реализации на Java платформе    Обзор пакета

Слайд 4Архитектура JMS API
JMS Provider — компонент системы сообщений,

реализующий JMS API и обеспечивающий общую функциональность системы
JMS

Clients — Java-программа, которая способна принимать и отправлять сообщения
Messages — объект, непосредственно представляющий сообщение
Administered Objects — специальный объект, который используется клиентами системы для взаимодействия с JMS provider-ом
Non-JMS Client — клиент системы, который использует для взаимодействия с системой API отличное от JMS API

/

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

Архитектура JMS API  JMS Provider — компонент системы сообщений, реализующий JMS API и обеспечивающий общую функциональность

Слайд 5Система сообщений PTP
Система PTP («Point-to-Point»-«от точки к точке»):

отправитель помещает сообщение в специально определённую очередь
получатель извлекает сообщение

из этой очереди
каждое сообщение может извлекаться из очереди только одним адресатом

/

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

Система сообщений PTP  Система PTP («Point-to-Point»-«от точки к точке»): отправитель помещает сообщение в специально определённую очередь

Слайд 6Система сообщений Pub/Sub
Система Pub/Sub («Publish/Subscribe» - «подписка»):
отправитель

(publisher) помещает сообщение в специально определённое хранилище сообщений (topic), которое

может играть роль репозитория сообщений или «доски объявлений»
получатель (subscriber) предварительно подписанный на получение сообщений из данного хранилища, имеет возможность извлекать из него сообщения
каждое сообщение может извлекаться любым количеством получателей (подписчиков)

/

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

Система сообщений Pub/Sub  Система Pub/Sub («Publish/Subscribe» - «подписка»): отправитель (publisher) помещает сообщение в специально определённое хранилище

Слайд 7Система сообщений Pub/Sub
Принципиальная схема работы системы сообщений Pub/Sub

(«Publish/Subscribe» - «подписка»)
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Система сообщений Pub/Sub  Принципиальная схема работы системы сообщений Pub/Sub («Publish/Subscribe» - «подписка»)/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Слайд 8Обзор пакет javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные типы, которые

используются в JMS, можно разделить на три группы в зависимости

от возможности их использования в разных системах сообщений:
обобщённые типы, которые могут использоваться при любом стиле системы сообщений (JMS Common)
типы, предназначенные только для работы в системе сообщений в стиле «от точки к точке» (PTP Domain)
типы, предназначенные только для работы в системе сообщений в стиле «публикация-подписка» (Pub/Sub Domain)
Обзор пакет javax.jms/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные типы, которые используются в JMS, можно разделить на три

Слайд 9Обзор пакета javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные обобщённые типы,

которые наследуются или могут использоваться при любом стиле системы сообщений

(JMS Common):
ConnectionFactory — фабрика соединений
Connection — обобщённое соединение
Session — однопоточный контекст для получения и отправки сообщений
MessageProducer — отправитель сообщений
MessageConsumer — получатель сообщения
Обзор пакета javax.jms/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные обобщённые типы, которые наследуются или могут использоваться при любом

Слайд 10Обзор пакета javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные обобщённые типы,

которые могут использоваться при любом стиле системы сообщений (JMS Common):
JMSContext

— представляет однопоточное активное соединение
JMSProducer — создаётся с помощью JMSContext и служит отправителем сообщения
JMSConsumer — создаётся с помощью JMSContext и служит получателем сообщения
Обзор пакета javax.jms/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные обобщённые типы, которые могут использоваться при любом стиле системы

Слайд 11Использование обобщённых типов
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные обобщённые типы,

которые наследуются или могут использоваться при любом стиле системы сообщений

(JMS Common)
Использование обобщённых типов/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные обобщённые типы, которые наследуются или могут использоваться при любом

Слайд 12Обзор пакета javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные типы, которые

предназначены только для работы в системе сообщений в стиле «от

точки к точке» (PTP domain)
QueueConnectionFactory
QueueConnection
QueueSession
QueueSender
QueueReceiver
Обзор пакета javax.jms/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные типы, которые предназначены только для работы в системе сообщений

Слайд 13Использование типов в системе PTP
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основная схема

использования стандартных типов в системе сообщений в стиле «от точки

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

Слайд 14Обзор пакета javax.jms
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Основные стандартные типы, которые

могут использоваться только в системе сообщений в стиле «публикация-подписка» (pub/sub

domain):
TopicConnectionFactory
TopicConnection
TopicSession
TopicPublisher
TopicSubscriber
Обзор пакета javax.jms/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Основные стандартные типы, которые могут использоваться только в системе сообщений в

Слайд 15Схема использования типов в системе Pub/Sub (подписки)
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans

(EJB)
Общая схема использования стандартных типов в системе сообщений в стиле

«публикация-подписка» (Pub/Sub domain)
Схема использования типов в системе Pub/Sub (подписки)/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Общая схема использования стандартных типов в системе

Слайд 16Схема работы системы сообщений
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
Общая схема работы

системы сообщений

Схема работы системы сообщений/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Общая схема работы системы сообщений

Слайд 17Типы сообщений
Типы сообщений JMS:
TextMessage (java.lang.String)
MapMessage (набор

пар «имя=значение»)
BytesMessage
StreamMessage
ObjectMessage (сериализуемый объект)
Message
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Типы сообщений  Типы сообщений JMS:  	TextMessage 	(java.lang.String)	MapMessage (набор пар «имя=значение»)	BytesMessage	StreamMessage	ObjectMessage (сериализуемый объект)	Message/Ю.Д.Заковряшин. Технология Enterprise JavaBeans

Слайд 18Клиент системы сообщений
Типичный клиент использует:
JNDI для

получения ссылки на объект типа ConnectionFactory
JNDI для получения

ссылки на объект типа Destination
ConnectionFactory для создания объекта типа JMS Connection
Connection для создания объектов типа JMS Sessions
Session и Destinations для создания объектов типа MessageProducers и MessageConsumers
Connection для начала обмена сообщениями (объектами типа Messages)

/

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

Клиент системы сообщений  Типичный клиент использует:  JNDI для получения ссылки на объект типа ConnectionFactory

Слайд 19Определение ресурсов
Администрируемые объекты можно определять:
в конфигурационных файлах
посредством аннотаций

Пример:
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
@Resource(lookup = "java:comp/DefaultJMSConnectionFactory")
private

static ConnectionFactory connectionFactory;
@Resource(lookup = "jms/DemoQueue")
private static Queue queue;
Определение ресурсов Администрируемые объекты можно определять:	в конфигурационных файлах	посредством аннотаций   Пример:  /Ю.Д.Заковряшин. Технология Enterprise JavaBeans

Слайд 207. Разработка компонент, управляемых сообщениями
Недостатки использования сессионных компонент

в качестве получателей сообщений
Свойства и жизненный цикл компонент,

управляемых сообщениями
Создание JMS компоненты, управляемой сообщениями
Создание обработчиков событий жизненного цикла JMS компоненты, управляемой сообщениями

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

/

7. Разработка компонент, управляемых сообщениями  Недостатки использования сессионных компонент в качестве получателей сообщений  Свойства и

Слайд 21Компоненты, управляемые сообщениями
Message-Driven Bean (MDB)- компоненты, управляемые сообщениями,

подобны объектам-«слушателям» в Java-программах за тем исключением, что они реагируют

не на события, а на сообщения
Эти компоненты не имеют интерфейсов для непосредственного взаимодействия с клиентом

/

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

Компоненты, управляемые сообщениями  Message-Driven Bean (MDB)- компоненты, управляемые сообщениями, подобны объектам-«слушателям» в Java-программах за тем исключением,

Слайд 22Компоненты, управляемые сообщениями
Управляемые сообщениями компоненты (Message-Driven Bean) имеют следующие особенности:
выполняются

при получении единственного сообщения клиента
имеют относительно короткий жизненный цикл
не представляют

собой непосредственно данных, но могут получать доступ к базам данных
вызываются асинхронно
могут поддерживать транзакции
не сохраняют своего состояния

/

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

Компоненты, управляемые сообщениямиУправляемые сообщениями компоненты (Message-Driven Bean) имеют следующие особенности:	выполняются при получении единственного сообщения клиента	имеют относительно короткий

Слайд 23Обозначения: Msg – отправляемое сообщение Queue – очередь сообщений, администрируемы объект
/
Ю.Д.Заковряшин. Технология

Enterprise JavaBeans (EJB)
Схема работы MDB

Обозначения: Msg – отправляемое сообщение Queue – очередь сообщений, администрируемы объект/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)Схема работы MDB

Слайд 24Жизненный цикл MDB
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Жизненный цикл MDB/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Слайд 25Свойства класса MDB
Определение класса Message-driven Bean должно:
быть

аннотировано аннотацией @MessageDriven или иметь соответствующее определение в дескрипторе поставки
иметь

глобальную область видимости (public)
не иметь спецификаторов abstract или final
иметь только конструктор по умолчанию (public конструктор без параметров)
наследовать (опционально) интерфейс javax.jms.MessageListener

/

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

Свойства класса MDB   Определение класса Message-driven Bean должно:	быть аннотировано аннотацией @MessageDriven или иметь соответствующее определение

Слайд 26Конфигурационные свойства MDB
Допустимые конфигурационные свойства JMS
acknowledgeMode (используется только

для MDB)
transactions
destinationLookup (имя администрируемого ресурса)
destinationType (javax.jms.Queue или javax.jms.Topic)
subscriptionDurability
clientId (optional)
subscriptionName
messageSelector
connectionFactoryLookup (имя

фабрики соединений)

/

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

Конфигурационные свойства MDB  Допустимые конфигурационные свойства JMS	acknowledgeMode (используется только для MDB)	transactions	destinationLookup (имя администрируемого ресурса)	destinationType (javax.jms.Queue или

Слайд 27Определение класса MDB
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(
propertyName =

"destinationLookup",
propertyValue = "jms/DemoQueue"),
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Queue")
})
public class SimpleMessageBean
implements

MessageListener {
@Resource
private MessageDrivenContext mdc;

@Override
public void onMessage(Message inMessage) {...}
}
Определение класса MDB/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)@MessageDriven(activationConfig = {	@ActivationConfigProperty(		propertyName =

Слайд 28Метод onMessage()
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
public void onMessage(Message inMessage) {
try

{
...
} catch (JMSException e) {

mdc.setRollbackOnly();
} catch (Throwable te) {

}
}

Метод onMessage()/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)public void onMessage(Message inMessage) {	try {			...			} catch (JMSException e) {				…				mdc.setRollbackOnly();			} catch (Throwable

Слайд 29Реализация клиента
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
@Resource(
lookup = "java:comp/DefaultJMSConnectionFactory")
private static ConnectionFactory

connectionFactory;

@Resource(lookup = "jms/MyQueue")
private static Queue queue;
Клиентский класс должен

самостоятельно выполнить все действия необходимые для использования JMS
Определение ссылок на основные администрируемые объекты JMS
Реализация клиента/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)@Resource(lookup =

Слайд 30Реализация клиента
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)
JMSContext context =
connectionFactory.createContext(
JMSContext.SESSION_TRANSACTED);

JMSProducer producer =

context.createProducer();

JMSConsumer consumer = context.createConsumer(dest);
Получение ссылок на объекты JMS

Реализация клиента/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)JMSContext context =connectionFactory.createContext(JMSContext.SESSION_TRANSACTED);JMSProducer producer = context.createProducer();JMSConsumer consumer = context.createConsumer(dest);Получение ссылок на объекты

Слайд 318. Использование служб таймера
Службы таймера
Создание обратного

вызова сообщения таймера
Обработка обратного вызова сообщения таймера

Управление объектами таймера

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

/

8. Использование служб таймера  Службы таймера  Создание обратного вызова сообщения таймера  Обработка обратного вызова

Слайд 329. Введение в Java Persistence API (JPA)
Назначение

и основные особенности JPA
Обзор основного API

Определение объектов типа Entity
Управление объектами

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

/

9. Введение в Java Persistence API (JPA)  Назначение и основные особенности JPA   Обзор основного

Слайд 33Назначение и особенности JPA
Представление ORM (Object Relational Mapping)

Структура JPA:
Java Persistence API
объектно-ориентированный язык запросов Java

Persistence Query Language (JPQL)
Java Persistence Criteria API
ORM метаданные, описывающие связи между объектами

/

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

Назначение и особенности JPA  Представление ORM (Object Relational Mapping)  Структура JPA: Java Persistence API объектно-ориентированный

Слайд 34Обзор основного API
Пакет javax.persistence
Аннотация Entity

Аннотация PersistenceContext
Интерфейс javax.persistence.EntityManager
Аннотации для спецификации атрибутов

класса (ID, ElementCollection …)
Пакет javax.validation.constraints
Аннотации Pattern и Pattern.List

/

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

Обзор основного API  Пакет javax.persistence  Аннотация Entity  Аннотация PersistenceContext  Интерфейс javax.persistence.EntityManager  Аннотации

Слайд 35Общие требования к классам Entity
Класс должен быть аннотирован как

javax.persistence.Entity
Должен иметь пустой конструктор (public или protected), может иметь

и другие конструкторы
Класс не может быть содержать спецификатор final в своем заголовке и не может содержать final атрибутов
Может наследовать любые классы
Атрибуты класса не могут иметь public область видимости и могут напрямую изменяться только методами доступа класса
Класс должен содержать атрибут первичного ключа

/

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

Общие требования к классам Entity Класс должен быть аннотирован как javax.persistence.Entity Должен иметь пустой конструктор (public или

Слайд 36Ограничения типов атрибутов класса Entity
Примитивные типы и их классы-оболочки

Классы java.lang.String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.TimeStamp
Массивы

byte[], Byte[], char[], Character[]
Перечисления enum
Классы Entity и их коллекции
Пользовательские сериализуемые классы

/

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

Ограничения типов атрибутов класса Entity Примитивные типы и их классы-оболочки Классы java.lang.String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date,

Слайд 37Класс составного ключа
Должен иметь открытый тип доступа
Должен быть

сериализуемым
Методы доступа к ключевым атрибутам класса должны иметь видимость

public или protected
Класс должен иметь конструктор по умолчанию
Класс должен переопределить методы equals(Object other) и hashCode()

/

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

Класс составного ключа Должен иметь открытый тип доступа Должен быть сериализуемым Методы доступа к ключевым атрибутам класса

Слайд 38Связи между сущностями
Один к одному (one-to-one)
Один ко многим

(javax.persistence.OneToMany)ги
Многие к одному (javax.persistence.ManyToOne)
Многие ко многим (javax.persistence.ManyToMany)
/
Ю.Д.Заковряшин. Технология

Enterprise JavaBeans (EJB)
Связи между сущностями Один к одному (one-to-one) Один ко многим (javax.persistence.OneToMany)ги Многие к одному (javax.persistence.ManyToOne) Многие ко

Слайд 39Управление сущностями
Управление на уровне контейнера
@PersistenceContext
EntityManager em;
Управление на уровне

приложения
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em = emf.createEntityManager();
@Resource
UserTransaction utx;
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Управление сущностями Управление на уровне контейнера@PersistenceContextEntityManager em; Управление на уровне приложения@PersistenceUnitEntityManagerFactory emf;EntityManager em = emf.createEntityManager();@ResourceUserTransaction utx;/Ю.Д.Заковряшин. Технология

Слайд 40Методы EntityManager
persist (Object entity)
refresh (Object entity)
remove

(Object entity)
boolean contains (Object entity)
createNamedQuery (String name)
T

find (Class entityClass, Object primaryKey)
clear ()
close()

/

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

Методы EntityManager  persist (Object entity) refresh (Object entity) remove (Object entity) boolean contains (Object entity) createNamedQuery

Слайд 41persistence.xml





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

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

Слайд 4210. Реализация транзакций
Управление разграничением транзакций
Реализация Container-Managed

Transactions (CMT)
Программное взаимодействие с текущей CMT транзакцией

Реализация Bean-Managed Transactions (BMT)
Применение транзакций к сообщениям

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

/

10. Реализация транзакций  Управление разграничением транзакций  Реализация Container-Managed Transactions (CMT)  Программное взаимодействие с текущей

Слайд 43Основные свойства транзакций
атомарность (Atomicity);
связность (Consistency);
независимость и изолированность

(Isolation);
сохраняемость (Durability)
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Основные свойства транзакций атомарность (Atomicity); связность (Consistency); независимость и изолированность (Isolation); сохраняемость (Durability)	/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Слайд 44Управление разграничением транзакций
Транзакции, управляемые EJB-контейнером (CMT):
вызов каждого

метода ассоциируется с отдельной транзакцией
границы транзакции устанавливаются контейнером
в

коде компонента нельзя использовать методы явного управления транзакциями (например, метод commit() интерфейса java.sql.Connection)
компонент не может вызывать метод getUserTransaction() интерфейса javax.ejb.EJBContext
код компонента не может использовать интерфейс javax.transaction.UserTransaction

/

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

Управление разграничением транзакций  Транзакции, управляемые EJB-контейнером (CMT): вызов каждого метода ассоциируется с отдельной транзакцией границы транзакции

Слайд 45Управление разграничением транзакций
Транзакции, управляемые компонентом (BMT):
компонент явно определяет границы

транзакции
компонент явно управляет транзакцией
/
Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Управление разграничением транзакцийТранзакции, управляемые компонентом (BMT): компонент явно определяет границы транзакции компонент явно управляет транзакцией/Ю.Д.Заковряшин. Технология Enterprise

Слайд 46Основные интерфейсы пакета javax.transaction
Интерфейс Transaction:

void commit() ;
int getStatus();
void registerSynchronization ( Synchronization sync);
void rollback()
void setRollbackOnly()
/
Ю.Д.Заковряшин.

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

Основные интерфейсы пакета javax.transaction Интерфейс Transaction:void	commit() ;int	getStatus();void	registerSynchronization ( Synchronization sync);void	rollback()void	setRollbackOnly()/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Слайд 47Основные интерфейсы пакета javax.transaction
Интерфейс TransactionManager:

void begin()
void commit()
int getStatus()
Transaction getTransaction()
void resume(Transaction tobj)
void rollback()
void setRollbackOnly()
void setTransactionTimeout(int seconds)
Transaction suspend()


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

Основные интерфейсы пакета javax.transaction Интерфейс TransactionManager:void	begin()void	commit()int	getStatus()Transaction	getTransaction()void	resume(Transaction tobj)void	rollback()void	setRollbackOnly()void	setTransactionTimeout(int seconds)Transaction	suspend()      /Ю.Д.Заковряшин. Технология Enterprise JavaBeans

Слайд 48Основные интерфейсы пакета javax.transaction
Интерфейс UserTransaction:

void begin()
void commit()
int getStatus()
void rollback()
void setRollbackOnly()
void setTransactionTimeout(int seconds)

/
Ю.Д.Заковряшин.

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

Основные интерфейсы пакета javax.transaction Интерфейс UserTransaction:void	begin()void	commit()int 	getStatus()void	rollback()void  setRollbackOnly()void	setTransactionTimeout(int seconds)/Ю.Д.Заковряшин. Технология Enterprise JavaBeans (EJB)

Слайд 49Управление разграничением транзакций
Способ управления может определяться с помощью аннотации


@TransactionManagement:

@Target(value=TYPE)
@Retention(value=RUNTIME)
public @interface TransactionManagement

Аннотация имеет одно поле value, которое может

принимать значения:
@TransactionManagementType.BEAN
@TransactionManagementType.CONTAINER (default)

/

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

Управление разграничением транзакций Способ управления может определяться с помощью аннотации @TransactionManagement:@Target(value=TYPE)@Retention(value=RUNTIME)public @interface TransactionManagement Аннотация имеет одно поле

Слайд 50Реализация СМТ
Аннотация @TransactionAttribute определяет атрибут транзакции:
для всех методов

класса компонента, если он указывается перед заголовком класса
для отдельного

метода компонента, если он указывается перед заголовком метода
атрибут транзакции, указанный для метода, имеет больший приоритет, чем атрибут, указанный для всего класса

/

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

Реализация СМТ Аннотация @TransactionAttribute определяет атрибут транзакции: для всех методов класса компонента, если он указывается перед заголовком

Слайд 51Атрибуты транзакций (javax.ejb.TransactionAttributeType)
Required – сервис всегда выполняется в

транзакции клиента
RequiresNew – сервис выполняется в новой транзакции,

на время выполнения которой транзакция клиента приостанавливается
Mandatory – сервис всегда должен выполняться в транзакции клиента, в противном случае выбрасывается исключение
NotSupported - сервис всегда выполняется вне транзакции клиента, транзакция клиента приостанавливается на время работы сервиса
Supports – сервис выполняется в транзакции клиента, если клиент выполняется в транзакции
Never – выбрасывается исключение при попытке выполнения в транзакции

/

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

Если метод одного объекта (клиент) вызывает метод другого объекта (сервис), то атрибут транзакции определяет в какой транзакции будет выполняться вызываемый метод сервисного объекта:

Атрибуты транзакций (javax.ejb.TransactionAttributeType)  Required – сервис всегда выполняется в транзакции клиента  RequiresNew – сервис выполняется

Слайд 52Пример реализации СМТ
/** Для всех методов класса устанавливается атрибут
транзакции NOT_SUPPORTED

*/
@TransactionAttribute(
TransactionAttributeType.NOT_SUPPORTED)
@Stateful
public class DemoTransaction implements Transaction {
/** Метод a()

будет вызываться с атрибутом транзакции REQUIRED*/
@TransactionAttribute(REQUIRED)
public void a() { ... }
/** Метод b() будет вызываться с атрибутом NOT_SUPPORTED, установленном для всего класса, т.е. вне транзакции*/
public void b() { ... }
}

/

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

Пример реализации СМТ/** Для всех методов класса устанавливается атрибуттранзакции NOT_SUPPORTED */@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)@Statefulpublic class DemoTransaction implements Transaction {

Слайд 53Программное взаимодействие с СМТ
Отмена транзакции:
контейнер автоматически отменяет

транзакцию при выбросе любого системного исключения
при выбросе пользовательского исключения

или по иным мотивам приложение может отменить транзакцию вызовом метода setRollbackOnly () интерфейса EJBContext

/

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

Программное взаимодействие с СМТ  Отмена транзакции: контейнер автоматически отменяет транзакцию при выбросе любого системного исключения при

Слайд 54Пример реализации метода с отменой транзакции
public void demo(double d) throws

UserException {
/* Значение аргумента метода d не должно

быть отрицательным. Ссылка context имеет тип javax.ejb.EJBContext */
if (d < 0.00) {
context.setRollbackOnly();
throw new UserException();
}
/* Действия при положительном значении аргумента метода d */
}

/

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

Пример реализации метода с отменой транзакцииpublic void demo(double d) throws UserException {  /* Значение аргумента метода

Слайд 55Синхронизация в рамках CMT
Для синхронизации данных компонент может

использовать интерфейс SessionSynchronization, который определяет методы:
afterBegin() throws EJBException, RemoteException,

который вызывается контейнером сразу после начала транзакции
beforeCompletion() throws EJBException, RemoteException, который вызывается контейнером непосредственно перед завершением транзакции
afterCompletion(boolean committed) throws EJBException, RemoteException, который вызывается контейнером сразу после завершения транзакции

/

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

Синхронизация в рамках CMT  Для синхронизации данных компонент может использовать интерфейс SessionSynchronization, который определяет методы: afterBegin()

Слайд 56Транзакции, управляемые компонентом (BМТ)
Использование BMT позволяет компонентам:
использовать

методы интерфейса javax.transaction.TransactionManager
использовать метод getUserTransaction() интерфейса javax.ejb.EJBContext


использовать методы begin(), commit(), getStatus() и rollback() интерфейса javax.transaction.UserTransaction
использовать методы управления транзакциями других интерфейсов, например java.sql.Connection

/

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

Транзакции, управляемые компонентом (BМТ) Использование BMT позволяет компонентам: использовать методы интерфейса javax.transaction.TransactionManager использовать метод getUserTransaction() интерфейса javax.ejb.EJBContext

Слайд 57Особенности реализации ВМТ
Способ управления транзакциями может определяться аннотацией @TransactionManagement

со значением javax.ejb.TransactionManagementType.BEAN
методы компонентов типа Stateful перед завершением своей

работы должны обязательно подтверждать или отменять транзакцию
нельзя использовать методы getRollbackOnly() и setRollbackOnly() интерфейса EJBContext

/

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

Особенности реализации ВМТ Способ управления транзакциями может определяться аннотацией @TransactionManagement со значением javax.ejb.TransactionManagementType.BEAN методы компонентов типа Stateful

Слайд 5811. Реализация классов и методов перехватчиков
Перехватчики и классы-перехватчики

Создание метода-перехватчика в классе компоненты
Создание класса-перехватчика

Ассоциирование методов-перехватчиков с компонентой
Включение методов-перехватчиков обратного вызова в класс-перехватчик

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

/

11. Реализация классов и методов перехватчиков  Перехватчики и классы-перехватчики  Создание метода-перехватчика в классе компоненты

Слайд 5912. Реализация безопасности
Архитектура безопасности Java EE
Аутентификация

вызывающего
Стратегии авторизации Java EE
Использование декларативной авторизации

Использование программной авторизации
Проверка прав пользователя, осуществляющего развертывание

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

/

12. Реализация безопасности  Архитектура безопасности Java EE  Аутентификация вызывающего  Стратегии авторизации Java EE

Слайд 6013. Использование технологии EJB - рекомендации
Общие рекомендации по

использованию технологии EJB
Выбор и применение известных шаблонов при

проектировании Java EE приложения
Эффективная обработка исключений при проектировании Java EE приложения

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

/

13. Использование технологии EJB - рекомендации  Общие рекомендации по использованию технологии EJB  Выбор и применение

Слайд 61Источники информации по технологии EJB
Спецификация платформы Java

EE 7
http://download.oracle.com/otndocs/jcp/java_ee-7-fr-eval-spec/index.html
Спецификация API платформы Java EE 7

http://docs.oracle.com/javaee/7/api/
Спецификация по технологии EJB
http://download.oracle.com/otndocs/jcp/ejb-3_2-fr-eval-spec/index.html
Общее руководство по платформе Java EE 7
http://docs.oracle.com/javaee/7/tutorial/doc/javaeetutorial7.pdf

/

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

Источники информации по технологии EJB  Спецификация платформы Java EE 7 http://download.oracle.com/otndocs/jcp/java_ee-7-fr-eval-spec/index.html Спецификация API платформы Java EE

Слайд 62Заключение
Обобщающий обзор рассмотренных вопросов
Вопросы, требующие дополнительного

рассмотрения
Рекомендации по дальнейшему изучению технологий платформы Java EE

Вопросы к лектору

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

/

Заключение  Обобщающий обзор рассмотренных вопросов  Вопросы, требующие дополнительного рассмотрения  Рекомендации по дальнейшему изучению технологий

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика