Я преследую проблему, когда вижу, что операторы SQL выполняются в журнале базы данных в транзакции, а затем вижу откат транзакции.
Это происходит как в Oracle, так и в Postgres, но только в некоторых установках.Само приложение является довольно стандартным приложением J2EE, использующим JPA и Eclipselink.
Я не вижу никаких исключений, и при этом код явно не сдается и не откатывается.
Лучшее, что я смогчтобы сделать это, найдите следующую запись в журнале:
[#|2011-09-26T11:30:56.052-0700|FINER|sun-appserver2.1|org.eclipse.persistence.session.file:/opt/glassfish/domains/domain1/applications/j2ee-apps/myapp/myapp-ejb_jar/_myapp-ejbPU.transaction|_ThreadID=18;_ThreadName=httpSSLWorkerThread-8888-2;ClassName=null;MethodName=null;_RequestID=e78196
09-bf2e-4026-8cbb-87fdd047c5eb;|begin unit of work flush|#]
Это происходит в то же время, что и ROLLBACK в журнале postgres:
appuser @ dbname: 102012/7/67486 2011-09-26 18:30:56.052 UTC - LOG: execute S_3: ROLLBACK
Обратите внимание, что БД находится в UTCпока приложение находится на Тихом океане.
Соответствующий код вызывается с помощью веб-службы с @TransactionAttribute(TransactionAttributeType.SUPPORTS)
Я работаю как с уровнями ведения журнала, так и с отладчиком, чтобы выяснить, могу ли я найти выбрасываемое и проглатываемое исключение, которое может вызватьэтот.
Как узнать, какой код вызывает откат?