복붙노트

[SPRING] UnexpectedRollbackException - 전체 시나리오 분석

SPRING

UnexpectedRollbackException - 전체 시나리오 분석

이 예외에 관해서 내가 아는 것은 Spring의 문서와 거대한 스택 추적을 첨부 한 서리가있는 개발자들이있는 포럼 게시물과 응답이 없다는 것입니다.

Spring의 문서에서 :

나는 한 번 그리고 모든 것을 이해하고 싶다.

해결법

  1. ==============================

    1.로그에서 조금 더 스크롤하거나 (또는 ​​버퍼 크기를 늘리십시오) 그러면 예외가 정확히 무엇이 발생했는지 알 수 있습니다.

    로그에서 조금 더 스크롤하거나 (또는 ​​버퍼 크기를 늘리십시오) 그러면 예외가 정확히 무엇이 발생했는지 알 수 있습니다.

    거기에 없으면 UnexpectedRollbackException의 getMostSpecificCause () 및 getRootCause () 메소드를 확인하십시오.이 메소드가 유용 할 수 있습니다.

  2. ==============================

    2.나머지 질문에 답하는 것으로 나타났습니다. https://jira.springsource.org/browse/SPR-3452

    나머지 질문에 답하는 것으로 나타났습니다. https://jira.springsource.org/browse/SPR-3452

  3. ==============================

    3.그럼 UnexpectedRollbackException을 재현하는 방법을 알려줄 수 있습니다. 내 프로젝트에서 일하고 있었는데 다음과 같은 상황에서 UnexpectedRollbackException이 발생했습니다. 저는 프로젝트에서 컨트롤러, 서비스 및 DAO 레이어를 사용하고 있습니다. 내가 한 것은 내 서비스 계층 클래스에 있습니다.

    그럼 UnexpectedRollbackException을 재현하는 방법을 알려줄 수 있습니다. 내 프로젝트에서 일하고 있었는데 다음과 같은 상황에서 UnexpectedRollbackException이 발생했습니다. 저는 프로젝트에서 컨트롤러, 서비스 및 DAO 레이어를 사용하고 있습니다. 내가 한 것은 내 서비스 계층 클래스에 있습니다.

    class SomeServiceClass {
        void outerTransaction() {
            // some lines of code
            innerTransaction();
            //AbstractPlatformTransactionManager tries to commit but UnexpectedRollbackException is thrown, not here but in controller layer class that uses SomeServiceClass.
        }
    
        void innerTransaction() {
            try {
                // someDaoMethod or someDaoOperation that throws exception
            } catch(Exception e) {
                // when exception is caught, transaction is rolled back, outer transaction does not know about it.
                // I got this point where inner transaction gets rolled back when I set HibernateTransactionManager.setFailEarlyOnGlobalRollbackOnly(true)
                // FYI : use of following second dao access is wrong, 
                try {
                    // again some dao operation
                } catch(Exception e1) {
                    throw e2;
                }
            }
        }
    }
    
  4. from https://stackoverflow.com/questions/2007097/unexpectedrollbackexception-a-full-scenario-analysis by cc-by-sa and MIT license