транзакция не откатывается с помощью диспетчера транзакций jta

Я новичок в Spring и спящем режиме, пожалуйста, помогите,

Я использую (Jboss 6.0 Final в качестве сервера)

org.springframework.transaction.jta.JtaTransactionManager

как bean-компонент с набором свойств

transactionManagerName как java:/TransactionManager и

userTransactionName как java:comp/UserTransaction.

In code I have set

jtaTxManager
property thr setters.

потом

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

and then transaction is started using

tx.begin()
statement.

I have used

sessionFactory.getCurrentSession()  
to get session of hibernate

наконец-то я использовал

tx.commit() 

I am using hibernate to save multiple records within jta transaction but If in between any database error occurs between some record like constraint violation exception getting thrown on tx.commit() which is

javax.transaction.RollbackException
which when catch I used to call tx.rollback() but my transaction is not getting rollback and getting following exception on tx.rollback().I have not set any type auto commit property in hibernate properties.

Но моя первая из записей сохраняется в базе данных, в идеале они не должны сохраняться, но при откате возникает это исключение, поэтому я думаю, что именно поэтому они сохраняются.

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)

person Ram    schedule 19.10.2011    source источник
comment
Вы начали транзакцию?   -  person Puce    schedule 19.10.2011
comment
да, но при откате я получаю исключение выше   -  person Ram    schedule 19.10.2011


Ответы (2)


Эта проблема возникла из-за конфигурации источника данных, о которой забыл упомянуть ранее.

Удалено из application-context.xml

org.springframework.jdbc.datasource.DriverManagerDataSource

вместо этого использовался источник данных jndi jboss, настроенный в oracle-xa-ds.xml

person Ram    schedule 22.12.2011

В Javadoc говорится, что RollbackException возникает, когда транзакция откатывается, а не фиксируется - в таком случае, я думаю, вам не нужно откатывать ее вручную. http://download.oracle.com/javaee/6/api/javax/transaction/Transaction.html#commit%28%29

person Puce    schedule 19.10.2011
comment
Затем в tx.commit(); я получаю исключение, например javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore .commitwhenaborted] и все же мои предыдущие записи сохраняются - person Ram; 20.10.2011