Comment manuellement commettre un géré la transaction

M'a donné une "API" sous la forme d'un POT pour faire quelques externes des opérations de la comptabilité de mon Java-Couture-Hibernate montage de dossier.

En interne, l'API est une plaine d'applications Hibernate, à l'aide de deux sources de données en plus de celui utilisé à partir de la Couture de lui-même.

Le problème est que l'un des "API" opérations soulève l'Exception suivante, lorsqu'il fait un interne .commit():

java.sql.SQLException: You cannot commit during a managed transaction!
    at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:543)
    at org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:334)
    at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:139)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:115)
    at com.other.APIAccountingImpl.moneyMovement(APIAccountingImpl.java:261)
    at com.myapp.integration.ExternalApiIntegrator.storeAcountingData(ExternalApiIntegrator.java:125)
    at com.myapp.session.EmployeeAccounting.persistData(EmployeeAccounting.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at ...

Le code source de la moneyMovement méthode ressemble à la norme Session Hibernate transaction idiome:

Session sess = factory.openSession();
Transaction tx;
try {
    tx = sess.beginTransaction();
    //do some work
    ...
    tx.commit();
}
catch (Exception e) {
    if (tx!=null) tx.rollback();
    throw e;
}
finally {
    sess.close();
}

Je suis l'aide de Couture géré transactions avec JTA. Je suis aussi obligé d'utiliser l'API et je ne suis pas autorisé à modifier le code source.

Quelles sont mes options? Comment puis-je isoler la Couture géré les transactions de la "API" Session Hibernate? Il est possible de configurer une connexion à partir d'une source de données spécifique pour ne pas être géré trx?

InformationsquelleAutor vz0 | 2011-01-25