Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / про роллбаск. / 7 сообщений из 7, страница 1 из 1
25.12.2006, 09:09:01
    #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
25.12.2006, 14:18:57
    #34222634
Transaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про роллбаск.
народд ну неужели никто не знает ???? этожж основы ?
...
Рейтинг: 0 / 0
25.12.2006, 14:42:31
    #34222731
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про роллбаск.
Если JBoss, то вот:

Тыдыжь

Вообще-то мне и не понятно как сервер должен перехватить прямой java method invoke чтобы вставить туда новую транзакицю. Это уже совсем АОП получается.
...
Рейтинг: 0 / 0
25.12.2006, 15:10:52
    #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
25.12.2006, 16:06:53
    #34223086
Transaction
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про роллбаск.
to Blazkowicz :

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

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


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