Если я отмечаю EJB для использования транзакции, управляемой контейнером, и из метода этого EJB я не использую явно setRollBackOnly() (при возникновении исключения), будет ли эта транзакция по-прежнему отмечена для отката автоматически?Контейнер Управляемая транзакция в EJB
ответ
Это зависит от того, или нет, исключение составляет исключение приложения (совершить по умолчанию) или системы исключения (Откат всегда). Исключения приложений чаще всего проверяются исключениями, объявленными в предложении throws, но они также могут быть объявлены посредством аннотации @ApplicationException
(или соответствующего элемента <application-exception>
в ejb-jar.xml).
Если возникшее исключение распространяется на RuntimeException, транзакция откатится. Если он продолжается от Exception (а не является RuntimeException), транзакция будет совершена.
С EJB 3.0, вы можете изменить это поведение с помощью @AnnotationException (или приложения-исключение дескриптора развертывания элемента EJB-jar.xml файла)
Независимо от того, какого класса распространяется исключение, если вы отметили класс с @AnnotationException (rollback = true) транзакция никогда не будет зафиксирована, oposite применяется, если вы отметите исключение с @AnnotationException (rollback = false).
Обратите внимание, что если ваш код генерирует исключение, но вы его поймаете, прежде чем контейнер сможет его перехватить, исключение не повлияет на состояние транзакции.
- 1. Управляемая бином транзакция в управляемом контейнером EJB
- 2. Контейнер-управляемая транзакция в JAX-WS, weblogic
- 3. Блан-управляемая транзакция: распространение транзакции
- 4. EJB Container Управляемая транзакция с набором результатов JDBC и MDB
- 5. Операция, управляемая контейнером в HIbernate
- 6. Транзакция по нескольким EJB
- 7. Struts + Spring + Spring управляемая транзакция + спящий режим
- 8. JSF, CDI, EJB + JPA и транзакция
- 9. EJB-CMT JPA флеш транзакция
- 10. Какой лучший контейнер EJB для обучения EJB?
- 11. Java EE, что означает транзакция в EJB?
- 12. Weblogic 10 встраиваемый контейнер EJB
- 13. Weblogic EJB CMT: транзакция не откат
- 14. Необходима транзакция при вызове нескольких методов EJB?
- 15. Jboss 7.1.1 Транзакция, каскадные методы EJB
- 16. EJB 3.0 - Вложенная транзакция! = Требуется Новое?
- 17. Hibernate, EJB, javax.persistence.TransactionRequiredException: транзакция не выполняется
- 18. Управляемая транзакция приложения (JTA) и постоянная управления контейнером (JPA)
- 19. Контейнер EJB находится на всех серверах приложений. EJB-контейнер в глубину
- 20. Войти с главной страницы, используя Контейнер Управляемая безопасность
- 21. Webcontainer/EJB-контейнер: управляемые фасоль JSF?
- 22. EJB контейнер и 3 слоя архитектура
- 23. Java EE 6 - Встроенный контейнер EJB-тесты
- 24. EJB контейнер с управляемой резьбой модель
- 25. Ручная транзакция
- 26. EJB Транзакция не совершена, если не используется EntityManger # flush()
- 27. @EJB аннотация по сравнению с поиском JNDI + транзакция
- 28. EJB и JPA и @OneToMany - Транзакция слишком длинная?
- 29. Управляемая сериализация в .NET
- 30. Управляемая структура в Eloquent
Итак, если возникает исключение приложения, и я не отмечаю его с помощью @ApplicationException или, то мне нужно отбросить его с помощью setRollBackOnly()? –
@AyanBiswas Да, но позвольте мне переформулировать то, что вы сказали для точности: если возникает исключение приложения, вам необходимо вручную отменить транзакцию с помощью setRollbackOnly; вы можете сделать исключение исключительным случаем приложения (1), добавив его в предложение throws, если метод, (2) аннотирует его '@ ApplicationException' или (3) использует' <приложение-исключение> '. –