2011-10-19 3 views
0

Je suis nouveau au printemps et hiverne s'il vous plaît aider,transaction ne reçoit pas rouler soutenu avec le gestionnaire de transactions JTA

J'utilise (Jboss 6.0 final en tant que serveur)

org.springframework.transaction.jta.JtaTransactionManager

comme haricot propriétés à régler

transactionManagerName comme java:/TransactionManager et

userTrans actionName as java: comp/UserTransaction. En code, j'ai défini

jtaTxManager
propriété thr setters.

Puis

javax.transaction.TransactionManager tx = jtaTxManager.getTransactionManager();

, puis la transaction est lancée par déclaration

tx.begin()
.

J'ai utilisé

sessionFactory.getCurrentSession()
pour obtenir session de mise en veille prolongée

enfin je l'ai utilisé

J'utilise en veille prolongée pour enregistrer plusieurs enregistrements dans la transaction JTA mais si entre une erreur de base de données se produit entre un enregistrement comme une exception de violation de contrainte est lancé sur tx.commit() qui est

javax.transaction.RollbackException
qui, lorsque je l'appelais, appelait tx.rollback() mais ma transaction n'obtenait pas d'annulation et obtenait l'exception suivante sur tx.rollback(). définir toute propriété de validation automatique de type en Hib propriétés d'ernate.

Mais mon premier enregistrement est sauvegardé dans la base de données, idéalement, il ne devrait pas être sauvegardé, mais en cas de retour de cette exception, je pense que c'est la raison pour laquelle ils sont sauvegardés.

 
java.lang.IllegalStateException: BaseTransaction.rollback - [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] no transaction! 
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:158) 
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114) 
+0

Avez-vous commencé la transaction? – Puce

+0

oui, mais tout en rollback je reçois au-dessus de l'exception – Ram

Répondre

1

Ce problème est dû à la configuration de la source de données, a oublié de mentionné plus haut,

Retiré de l'application-context.xml

org.springframework.jdbc.datasource.DriverManagerDataSource

et plutôt que cela, utilisé jndi datasorce de jboss configuré en oracle-xa-ds.xml

0

Le Javadoc indique que le RollbackException est jeté lorsque la transaction a été rolledback au lieu de commited - vous n'avez pas rollback manuellement dans ce cas, je pense. http://download.oracle.com/javaee/6/api/javax/transaction/Transaction.html#commit%28%29

+0

Puis sur tx.commit(); je reçois une exception comme javax.transaction.RollbackException: [com.arjuna.ats.internals.j.transaction.arjunacore.commitwhenaborted] [com .arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] et toujours mes enregistrements précédents sont enregistrés – Ram

Questions connexes