Читаем Изучаем Java EE 7 полностью

АтрибутОписание
REQUIREDЭтот атрибут (задан по умолчанию) означает, что метод всегда должен вызываться внутри транзакции. Контейнер создает новую транзакцию, если метод вызывается из клиента, не использующего транзакции. Если клиент имеет контекст транзакций, бизнес-метод запускается внутри транзакции клиента. Вам следует указывать атрибут REQUIRED в том случае, когда вызываются методы, которые должны использовать транзакции, но при этом нельзя однозначно сказать, использует клиент транзакции или нет
REQUIRES_NEWКонтейнер всегда создает новую транзакцию перед тем, как начать выполнять метод. Независимо от того, имеет ли клиент контекст транзакции, контейнер временно приостанавливает эту транзакцию, создает новую, фиксирует или откатывает ее, а затем возобновляет первую транзакцию. Это означает, что успех или провал второй транзакции не имеет никакого эффекта для существующей транзакции клиента. Вам следует указывать атрибут REQUIRES_NEW, если вы не хотите выполнять откат транзакции, который мог бы затронуть клиент
SUPPORTSМетод EJB наследует контекст транзакции клиента. Если контекст транзакции доступен, он используется этим методом, в противном случае контейнер вызывает метод без контекста транзакции. Вам следует указывать атрибут SUPPORTS, если у вас есть доступ к базе данных только для чтения
MANDATORYКонтейнер требует наличия транзакции перед вызовом бизнес-метода, но не станет создавать новый контекст. Если клиент имеет контекст транзакции, он используется, в противном случае генерируется исключение javax.ejb.EJBTransactionRequiredException
NOT_SUPPORTEDМетод EJB не может быть вызван при наличии контекста транзакции. Если клиент не имеет контекста транзакции, ничего не происходит, в противном случае контейнер приостанавливает транзакцию клиента, вызывает метод, а затем, как только метод отработает, возобновляет транзакцию
NEVERМетод EJB не должен вызываться из клиента, использующего транзакции. Если клиент имеет контекст транзакции, контейнер генерирует исключение javax.ejb.EJBException

На рис. 9.6 проиллюстрированы все возможные варианты поведения, которые EJB может иметь в зависимости от наличия контекста транзакции у клиента. Например, если метод createBook() не имеет контекста транзакции (верхняя часть рисунка) и вызывает метод addItem(), имеющий атрибут MANDATORY, то генерируется исключение. В нижней части рис. 9.6 показаны те же комбинации, но для клиента, который имеет контекст транзакции.

Рис. 9.6. Два вызова InventoryEJB, осуществленные при различной политике транзакций

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных