2012-09-27 53 views
0

我有一個代碼,我通過JPA更新一個數據庫,並通過webservice更新一個數據庫。但是,如果我從webservcie得到一些異常,我的JPA事務沒有得到回滾。能否請你建議我如何使JPA + Webservice的工作爲XA事務Spring @Transaction不適用於JPA和Webservice

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

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

<tx:annotation-driven/> 

而且我的Java類看起來像下面

@Transactional 
public void method1() 
{ 

// persist database1 through JPA 

// persist database2 through Webservice 
} 
+0

我不認爲任何Web服務棧XA感知。爲什麼你的spring事務沒有回滾,可能可以用方法的代碼來解釋,你不會顯示。 –

回答

1

什麼類型的異常是Web服務調用投擲?

的默認行爲是RuntimeExceptions回滾,所以如果WS拋出checked異常就沒有回退,但你可以改變與:

@Transactional(rollbackFor = Exception.class) 
+0

非常感謝。這工作。我假設回滾將針對checked和unchecked異常完成。 –

+0

我很高興這有助於您,如果您願意,可以將其標記爲已接受的答案。 – AdolfoV

相關問題