|
|
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
Такой вопрос. Есть некий метод, метод под транзакцией. Я создаю аспект, вешаю его на этот метод как исполниться после. аспект выбрасывает ексепшн. и.... транзакция основного метода так же откатывается! т.е. выходит, что мой аспект висит внутри транзакции основного метода. как так? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 20:38 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, Транзакции сами по себе реализованы через AOP. Интерцептор\прокси для управления транзакциями оборачивает целевой метод и пр выбросе RuntimeException откатывает транзакцию. Откуда ему знать кто именно там внутри выбросил исключение, сам целевой метод или другой аспект. Важен только тот факт что исключение было выброшено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 21:17 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
да. но я ожидал активити аспекта так, что он запускается ПОСЛЕ завершения базового метода и закрытия егошней (сорри за это слово) транзакции. т.е. транзакция откр - базовый метод - транзакция закр - транзакция откр - аспект - транзакция закр. а иначе какой от них толк? И вообще как-то не логично например, выглядит если базовый метод внутри своей транзакции кидает ексепшн, я аспектом его ловлю, и там открываю-закрываю транзакцию. и всё ок. отрабатывает. Хорошо, тогда возможно как то стандартными средствами разорвать транзакцию базового метода и в аспекте зарядить свою? Дабы завалившийся аспект не порушил основной метод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 21:59 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, Покажите что ли код. - Scope транзакции ограничен именно этим методом? - Нужно как-то сказать аспекту, чтобы он использовал не сам бин, а уже прокси с транзакционной оберткой над ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 08:17 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
да там собссно нечего показывать так то.. есть метод помеченный аннотацией транзакшнл, а есть аспект повешенный на "послеИсполнения". Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 09:45 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
Я конечно могу в трайкеч всю требуху внутри обернуть, но мне кажется это не очень верный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 09:49 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrда там собссно нечего показывать так то.. Ну, тогда можно и закончить обсуждение. natanabrahamjrесть метод помеченный аннотацией транзакшнл, а есть аспект повешенный на "послеИсполнения". Вы проигнорировали вопрос про scope транзакции. Может у вас транзакция началась за пределами этого метода вообще. Откуда нам знать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 10:10 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrЯ конечно могу в трайкеч всю требуху внутри обернуть, но мне кажется это не очень верный подход. У вас проблема в порядке навешивания аспектов на метод. Посмортрите в мануале Spring http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html про Ordering Не скажу точно как именно в вашем примере его прилепить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 10:16 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы проигнорировали вопрос про scope транзакции. Может у вас транзакция началась за пределами этого метода вообще. Откуда нам знать? ааааааааааааааааа. Теперь я Вас понял. Спасибо, гляну. т.е. может действительно такое быть что тот метод покрыт другой транзакцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 10:35 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrааааааааааааааааа. Теперь я Вас понял. Спасибо, гляну. т.е. может действительно такое быть что тот метод покрыт другой транзакцией. Нет. Это та же транзакция. Просто @Transactional имеет по-умолчанию propagation=REQUIRED. Это значит что, возможно, этот метод не создаёт транзакцию, а использует уже существующую, тогда упорядочивание аспектов вообще никак не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 10:39 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
я так понимаю что если внутри транзакционного метода я дергаю второй метод с транзакцией реквайрд-нью, и вешаю уже на него аспект, то по-идее должно сработать? он же ексепшн кинет в контексте того метода? В общем, надо попробовать. )) думаю, что один фиг завернтет покрывающую их транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 20:06 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrя так понимаю что если внутри транзакционного метода я дергаю второй метод с транзакцией реквайрд-нью, и вешаю уже на него аспект, то по-идее должно сработать? он же ексепшн кинет в контексте того метода? В общем, надо попробовать. )) думаю, что один фиг завернтет покрывающую их транзакцию. Тогда нужно явно указывать порядок аспектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 20:08 |
|
||
|
Spring AOP непонятки
|
|||
|---|---|---|---|
|
#18+
Blazkowicznatanabrahamjrя так понимаю что если внутри транзакционного метода я дергаю второй метод с транзакцией реквайрд-нью, и вешаю уже на него аспект, то по-идее должно сработать? он же ексепшн кинет в контексте того метода? В общем, надо попробовать. )) думаю, что один фиг завернтет покрывающую их транзакцию. Тогда нужно явно указывать порядок аспектов. продолжаю пляски с бубном ))) Указал ордеринг, ставлю ордер ноль - выполняется внутри той же транзакции после метода над которой он стоит навешан аспект... Ставлю ордер-1 -- и... Алллиллуя! (почти) -- первая транзакция закрывается, во второй можно кидать эксепшн и всё хорошо - всё отразилась.... НО. теперь самое интересное - вторая транзакция то... НЕ ЗАКРЫВАЕТСЯ. т.е. она висит вечно. чтоб изменения появились - надо делать сейвэндфлюш. Но это ясно не дело, т.к. транзакция всё-равно открыто. что за... магия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2016, 22:10 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=85&tid=2123587]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 362ms |

| 0 / 0 |
