|
|
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Использую Jetty (maven plugin) и Tomcat, Spring 3.1.2, управление с помощью аннотаций @Transactional(propagation= Propagation.REQUIRED). Спринг Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. maven Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. log4j log4j.logger.org.springframework.transaction=DEBUG, stdout log4j.additivity.org.springframework.transaction=false log4j.logger.org.springframework.orm=DEBUG, stdout log4j.additivity.org.springframework.orm=false log4j.logger.org.springframework.jdbc=DEBUG, stdout log4j.additivity.org.springframework.jdbc=false log4j.logger.org.hibernate.SQL=DEBUG, stdout log4j.additivity.org.hibernate.SQL=false log4j.logger.org.hibernate.transaction=DEBUG, stdout log4j.additivity.org.hibernate.transaction=false В выводе есть строки при старте контейнера: [org.springframework.transaction.annotation.AnnotationTransactionAttributeSource][{}] - Adding transactional method 'doPost' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; '' [org.springframework.orm.hibernate3.HibernateTransactionManager][{}] - Using DataSource [com.mchange.v2.c3p0.ComboPooledDataSource [ ........ ] of Hibernate SessionFactory for HibernateTransactionManager При запросах которые используют метод который должен выполняться в транзакции никаких ее следов в логах я не наблюдаю. Типа Commit transaction или Start transaction ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:30:04 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Что-то не въехал. Проблема в том что транзакции не логируются, или в том что они не работают вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:37:12 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, судя по всему не работают) Я просто слабо представляю как из логов определить работают они или нет) В логах идет Open Connection и и сразу запросы. Никаких отключений autocommit'а и строчек типа start transaction или commit transaction нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:39:23 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
TransactionSynchronizationManager.isActualTransactionActive() в методе. doPost это ваш метод отмеченый? MySQL InnoDB? Не MyISAM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:46:19 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczTransactionSynchronizationManager.isActualTransactionActive() в методе. doPost это ваш метод отмеченый? MySQL InnoDB? Не MyISAM? "TransactionSynchronizationManager.isActualTransactionActive() в методе." - не понял, это в лог добавить? 2 - да, 3 да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:47:41 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
rdmTransactionSynchronizationManager.isActualTransactionActive() в методе. doPost это ваш метод отмеченый? Вызвать и посмотреть значение. ~Ваш Кэп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:56:26 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. 2. Получил: actualTransactionActive false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 15:58:10 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, забыл добавить jetty пишет: 2012-08-06 15:56:26.895::INFO: jetty-6.1.10 2012-08-06 15:56:26.082::INFO: No Transaction manager found - if your webapp requires one, please configure one. Как я понял это относиться к JTA, т.е. к моим локальным транзакциям не относиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 16:01:45 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 16:04:59 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я правильно понимаю, что если смотреть через jvisualvm, то должно быть два загруженных экземпляра, например 1 - MyTransactionClass 2 - MyTransactionClass$$EnhancerByCGLIB$$ec6247c4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 16:52:36 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
У меня сейчас вот так. Насколько это правильно? MyTransactionClass - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4 - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4$$FastClassByCGLIB$$377b3e35 - 1 MyTransactionClass$$FastClassByCGLIB$$282054ff - 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 16:56:50 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Ссылкой я хотел сказать: "проверьте, а не создаётся ли у вас два разных спринговых контекста". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:05:30 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, класс, в котором метод помечен аннотацией @Transactional находиться в mypackage.service. Я не использую аннотации типа @Service, а создаю service bean в applicationContext.xml используя <bean><property>...<bean/> В applicationContext.xml записей вида <context:component-scan... /> у меня нет . В dispatcher-servlet.xml есть запись <context:component-scan base-package="mypackage.controllers" /> Была еще запись <context:component-scan base-package="mypackage.service" /> я ее удалил. После удаления этой строчки в логе появилось actualTransactionActive true . Но при это происходит ошибка в строке, где идет запись в MongoDB, это видимо другая история) Если не брать во внимание эту ошибку, то конфигурация у меня правильная? jvisualvm показывает: MyTransactionClass - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4 - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4$$FastClassByCGLIB$$377b3e35 - 1 MyTransactionClass$$FastClassByCGLIB$$282054ff - 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:20:06 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Наверно это было важно, забыл написать) В этом методе(@Transactional) у меня идет запись в Mysql и MongoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:26:59 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Я вам один простой вопрос. Вы мне кучу неотносящихся к вопросу фактов. rdmBlazkowicz, класс, в котором метод помечен аннотацией @Transactional находиться в mypackage.service. Это очень важно. rdmЯ не использую аннотации типа @Service, Это тоже очень важно. rdmа создаю service bean в applicationContext.xml используя <bean><property>...<bean/> Первый контекст. rdmВ applicationContext.xml записей вида <context:component-scan... /> у меня нет . Смотрите выше. rdmВ dispatcher-servlet.xml ... Второй контекст. rdmесть запись <context:component-scan base-package="mypackage.controllers" /> Была еще запись <context:component-scan base-package="mypackage.service" /> я ее удалил. ОК rdmПосле удаления этой строчки в логе появилось actualTransactionActive true . Методом научного тыка выявили источник проблемы? rdmНо при это происходит ошибка в строке, где идет запись в MongoDB, это видимо другая история) Это очень важная информация без текста самой ошибки. rdmЕсли не брать во внимание эту ошибку, то конфигурация у меня правильная? Подозреваю что нет: 12969648 . У вас два XML как друг с другом связаны, чтобы жить в одном контексте? rdm jvisualvm показывает: MyTransactionClass - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4 - 1 MyTransactionClass$$EnhancerByCGLIB$$ec6247c4$$FastClassByCGLIB$$377b3e35 - 1 MyTransactionClass$$FastClassByCGLIB$$282054ff - 1 У меня deja vu: 12969574 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:30:32 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
rdmНаверно это было важно, забыл написать) В этом методе(@Transactional) у меня идет запись в Mysql и MongoDB. Может вам ещё нужно чтобы при ошибке в одном откатывались изменения в другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:31:13 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczrdmНаверно это было важно, забыл написать) В этом методе(@Transactional) у меня идет запись в Mysql и MongoDB. Может вам ещё нужно чтобы при ошибке в одном откатывались изменения в другом? Желательно) Но видимо до этого еще ой как далеко.. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:53:33 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
rdmЖелательно) Но видимо до этого еще ой как далеко.. ) Нужно будет тогда использовать спринговый JTA менеджер транзакций. И прикрутить какую-нибудь реализацию JTA, например Atomikos. Настройки MySQL надо поменять с обычного JDBC драйвера на XA. MongoDB не обязательно должен поддерживать XA, но как его включить в JTA транзакцию, надо погуглить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:58:45 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
BlazkowiczrdmЖелательно) Но видимо до этого еще ой как далеко.. ) Нужно будет тогда использовать спринговый JTA менеджер транзакций. И прикрутить какую-нибудь реализацию JTA, например Atomikos. Настройки MySQL надо поменять с обычного JDBC драйвера на XA. MongoDB не обязательно должен поддерживать XA, но как его включить в JTA транзакцию, надо погуглить. Да я думаю мне пока рановато про XA думать) Я хотел в этом методе в одной транзакции получить id вставленной записи и использовать это id в другом запросе в той же транзакции. Вот чувствую что так нельзя было делать, ох нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:03:27 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
rdm Я хотел в этом методе в одной транзакции получить id вставленной записи и использовать это id в другом запросе в той же транзакции. Вот чувствую что так нельзя было делать, ох нельзя. Чей-та нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:04:27 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Blazkowiczrdm Я хотел в этом методе в одной транзакции получить id вставленной записи и использовать это id в другом запросе в той же транзакции. Вот чувствую что так нельзя было делать, ох нельзя. Чей-та нельзя? Можно да? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:24:44 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! Удалив строчку <context:component-scan base-package="mypackage.service" /> забыл добавить ref на bean, в итоге вылетало nullpointerexception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:40:04 |
|
||
|
Подскажите почему не работают транзакции Spring
|
|||
|---|---|---|---|
|
#18+
http://stackoverflow.com/questions/7774295/spring-xml-file-configuration-hierarchy-help-explanation/7774597#7774597%5D%D0%9E%D1%82%D0%BB%D0%B8%D1%87%D0%BD%D0%B0%D1%8F]http://stackoverflow.com/questions/7774295/spring-xml-file-configuration-hierarchy-help-explanation/7774597#7774597]Отличная ссылка по теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 20:06:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37905898&tid=2131192]: |
0ms |
get settings: |
16ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
56ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
100ms |
get tp. blocked users: |
2ms |
| others: | 298ms |
| total: | 527ms |

| 0 / 0 |
