This is just a short reminder to the cause and solution of the following exception (hibernate + jboss 4.2.2 GA + oracle 10):

2012-02-09 13:09:50,333 ERROR [Thread-3-org.hibernate.AssertionFailure] an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
java.lang.NullPointerException
at org.hibernate.engine.ActionQueue.afterTransactionCompletion(ActionQueue.java:176)
at org.hibernate.impl.SessionImpl.afterTransactionCompletion(SessionImpl.java:424)
at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:225)
at org.hibernate.transaction.CacheSynchronization.afterCompletion(CacheSynchronization.java:85)
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(SynchronizationImple.java:136)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:340)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:107)
at com.arjuna.ats.arjuna.AtomicAction.cancel(AtomicAction.java:230)
at com.arjuna.ats.arjuna.coordinator.TransactionReaper.check(TransactionReaper.java:202)
at com.arjuna.ats.internal.arjuna.coordinator.ReaperThread.run(ReaperThread.java:107)
2012-02-09 13:09:50,339 WARN [Thread-3-com.arjuna.ats.arjuna.logging.arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_4] TwoPhaseCoordinator.afterCompletion - returned failure for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@16b05f3
2012-02-09 13:09:50,345 WARN [MyClusteredScheduler_Worker-1-org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: null
2012-02-09 13:09:50,345 ERROR [MyClusteredScheduler_Worker-1-org.hibernate.util.JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000001:ba66:4f33c42d:35 status: ActionStatus.ABORTED >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000001:ba66:4f33c42d:35 status: ActionStatus.ABORTED >)
2012-02-09 13:09:50,348 ERROR [MyClusteredScheduler_Worker-1- Error in execution : Wrapped org.hibernate.exception.GenericJDBCException: Cannot open connection

This occurs in the case of a long transaction such as the import of a lot of data. Setting the transaction timeout in the code did not worked:

<pre lang="java">
tx = session.createTransaction();
tx.setTimeout(600);
tx.begin();

The solution is described here and involves changing the default/conf/jboss-server.xml file:

<pre lang="xml"><mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService" name="jboss:service=TransactionManager">
   <attribute name="TransactionTimeout">600</attribute>
   <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> 
</mbean>