2010-11-28 2 views
0

supose 나는 다음과 같은 예를 가지고 :주석이있는 트랜잭션 어드바이저를 사용하는 방법은 무엇입니까?

@Transactional(propagation=Propagation.SUPPORTS, readOnly=true) 
public class MyServiceImpl implements MyService { 

    ... 

    @Transactional(propagation=Propagation.REQUIRED, readOnly=false) 
    public TransactionResponse addMyEntity(MyEntity e) throws SQLException{ 
     ... 
    } 

    ... 
} 

을 그리고 내의 ApplicationContext에 : 좋아

<tx:annotation-driven transaction-manager="txManager" /> 

, 지금은 SQLException이가 발생하면 트랜잭션의 롤백 후 인터셉터를 추가 할. 어떻게해야합니까? 사전에

감사

편집

내가 할 노력하고있어 명확히하려고합니다

: 나는 WS가

은, 그건 DB 및 반환에 대한 몇 가지 정보를 지속 응답 (isOk 부울 및 오류가있는 경우 errorMessage)

예외가 발생할 때마다 :

  • 트랜잭션 롤백
  • 오류 메시지와 함께 응답을 작성하고이를 클라이언트로 리턴하십시오.

그것은 봄의 트랜잭션 프록시

+0

이미 WS의 끝점에 try/catch를 추가하여 문제를 해결했습니다. 나는 나의 서비스 위에 하나 더 많은 층이 있다는 것을 잊었다. 끝점은 트랜잭션을 벗어 났으므로 끝점에서 응답을 관리 할 수 ​​있습니다. 그럼에도 불구하고 나는 이전에하려고했던 것을 할 수있는 방법이 있는지 알고 싶습니다. – Neuquino

+0

추가 측면을 정의하는 방법을 보여줄 수 있습니까? (xml 및 java 코드) – Bozho

답변

1

사용 tx:annotation-drivenorder 속성 주위에 시도/캐치처럼, 그리고 인터셉터 당신이 사용하는 것입니다. 따라서 어느 쪽이 다른 쪽보다 먼저 실행되는지 지정합니다. AOP AspectJ advice ordering 섹션을 참조하십시오.

+0

Thanks @ Bosho,하지만 내가 할 일을하기 위해 joinpoint를 정의하는 방법을 이해하지 못한다. EDIT 업데이트를 읽으십시오. – Neuquino

관련 문제