2012-09-27 1 views
0

J'ai un code où je suis en train de mettre à jour une base de données via JPA et en mettant à jour 1 autre base de données via webservice. Mais si je reçois une exception de webservcie, ma transaction JPA ne récupère pas. Pouvez-vous s'il vous plaît me suggérer comment faire fonctionner JPA + Webservice comme XA TransactionSpring @Transaction ne fonctionne pas pour JPA et Webservice

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

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

<tx:annotation-driven/> 

Et ma classe java ressemble ci-dessous

@Transactional 
public void method1() 
{ 

// persist database1 through JPA 

// persist database2 through Webservice 
} 
+0

Je ne pense pas que la pile de services Web est XA-conscient. Pourquoi votre transaction de printemps n'est pas annulée peut probablement s'expliquer par le code de la méthode, que vous ne montrez pas. –

Répondre

1

Quel type d'exception est le lancement d'appels de service Web?

Le comportement par défaut est rollback pour RuntimeExceptions, donc si le ws est de lancer une exception contrôlée il n'y aura pas rollback, mais vous pouvez changer cela avec:

@Transactional(rollbackFor = Exception.class) 
+0

Merci beaucoup. Ça a marché. Je supposais que la restauration sera effectuée pour les exceptions cochées et non cochées. –

+0

Je suis content que cela vous a aidé, vous pouvez le marquer comme la réponse acceptée si vous le souhaitez. – AdolfoV

Questions connexes