2012-09-27 2 views
0

JPA를 통해 하나의 데이터베이스를 업데이트하고 webservice를 통해 데이터베이스를 1 개 더 업데이트하는 코드가 있습니다. 그러나 웹 서버에서 예외가 발생하면 JPA 트랜잭션이 롤백되지 않습니다. 어떻게 XA 트랜잭션Spring @ JPA 및 Webservice 용 트랜잭션이 작동하지 않음

<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager"> 

</bean> 
<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/persistenceUnit"/> 

<tx:annotation-driven/> 

같은 JPA + WebService를 작동하게하는 날을 제안 해주십시오 그리고 내 자바 클래스는

@Transactional 
public void method1() 
{ 

// persist database1 through JPA 

// persist database2 through Webservice 
} 
+0

내가 어떤 웹 서비스 스택은 생각하지 않습니다 XA를 인식합니다. 스프링 트랜잭션이 롤백되지 않는 이유는 아마도 여러분이 보여주지 않은 메소드 코드에 의해 설명 될 수 있습니다. –

답변

1

는 웹 서비스 호출 던지는 예외의 유형입니다 아래처럼 보인다 수 있습니까?

기본 동작들이 RuntimeException에 대한 롤백, 그래서 WS는 확인이 끝난 예외를 던지는 경우 당신이 것을 바꿀 수 있지만, 롤백 (rollback)가 없을 것입니다 :

@Transactional(rollbackFor = Exception.class) 
+0

고마워. 그게 효과가 있었어. 나는 롤백이 체크 된 것과 체크되지 않은 예외 모두에 대해 수행 될 것이라고 가정하고 있었다. –

+0

도움이 되었기 때문에 기쁩니다. 원한다면 허용 된 답변으로 표시 할 수 있습니다. – AdolfoV

관련 문제