powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / про роллбаск.
7 сообщений из 7, страница 1 из 1
про роллбаск.
    #34221723
Transaction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет уважаемые форумчане.

есть непонимае теории по EJB3.

имеем бин.

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class ManagerApplications implements ManagerApplicationsInterface{

@PersistenceContext(name="PermissionManager", type=PersistenceContextType.TRANSACTION)
EntityManager manager;

@Resource
SessionContext ejbContext;

....

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void tran(Object object){
((Application)object).setShortname("proba");
manager.merge(object);
ejbContext.setRollbackOnly();
}

public Object uppObject(Object object){
System.out.println(ejbContext.getRollbackOnly());
manager.merge(object);
tran(object);
System.out.println(ejbContext.getRollbackOnly());
}

}

вопррос такой. если метод tran Объявлен как инициирующий новую транзакцию, то почему если я грю контейнеру откатить транзакцию ejbContext.setRollbackOnly(); в tranc, он откатывает и транзакцию в методе uppObject(), т.е. второй
System.out.println(ejbContext.getRollbackOnly()); покажет труе, хотя по идее должен сказать false ?
...
Рейтинг: 0 / 0
про роллбаск.
    #34222634
Transaction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
народд ну неужели никто не знает ???? этожж основы ?
...
Рейтинг: 0 / 0
про роллбаск.
    #34222731
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если JBoss, то вот:

Тыдыжь

Вообще-то мне и не понятно как сервер должен перехватить прямой java method invoke чтобы вставить туда новую транзакицю. Это уже совсем АОП получается.
...
Рейтинг: 0 / 0
про роллбаск.
    #34222840
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.6.2.8 Handling of setRollbackOnly Method
The container must handle the EJBContext.setRollbackOnly method invoked from a business
method executing with the REQUIRED, REQUIRES_NEW, or MANDATORY transaction attribute as follows:
The container must ensure that the transaction will never commit. Typically, the container
instructs the transaction manager to mark the transaction for rollback.

If the container initiated the transaction immediately before dispatching the business method to
the instance (as opposed to the transaction being inherited from the caller), the container must
note that the instance has invoked the setRollbackOnly method. When the business
method invocation completes, the container must roll back rather than commit the transaction.
If the business method has returned normally or with an application exception, the container
must pass the method result or the application exception to the client after the container performed
the rollback.
...
Рейтинг: 0 / 0
про роллбаск.
    #34223086
Transaction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Blazkowicz :

выходит, что новая транзакция инициируется тока если вызов будет из другого бина ?
...
Рейтинг: 0 / 0
про роллбаск.
    #34225171
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обязательно, можно попытаться получить проксю бина и дернуть метод.
...
Рейтинг: 0 / 0
про роллбаск.
    #34227872
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поковырял ещё вопрос. Суть в том что большинство реализаций AOP работают через проксированые вызовы. Когда класс дергает this метод, ни какой прокси естественно нет и перехватить вызов дабы наложиьт на него АОП некому.

Единственный вариант проксирования с возможностью перехвата вызовов this это модификация байткода. Такое умеет например AspectJ. Вот со спрингами можно транзакции завязать через AspectJ. Как в этом случае морочатся с EJB - не представляю. Спека по этому поводу не достаточно ясна. И опять нужно смотреть вендорную реализацию.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / про роллбаск.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]