Hi,
Normally, we use Spring and Atomikos to manage the JTA sessions and set hibernate.auto_close_session to true. Now, if we manually open a stateless session (for some async job) as:
How do we close the StatelessSession? If we call
then the "currentSession" will rollback.
If we annotate
on the method that use the StatelessSession, the commit hangs, the Atomikos log shows that it keep spawning new transactions and never stops.
Full code:
There is already a Spring managed session, and this method was called.
Could you suggest what is wrong?
Normally, we use Spring and Atomikos to manage the JTA sessions and set hibernate.auto_close_session to true. Now, if we manually open a stateless session (for some async job) as:
Code:
StatelessSession sl = sessionFactory.openStatelessSession();
Code:
sl.close()
If we annotate
Code:
@Transactional(propagation = Propagation.NOT_SUPPORTED)
Full code:
Code:
public Vendor findByCode(String code) {
StatelessSession slsession = null;
Transaction tx = null;
try {
slsession = getStatelessSession();
tx = slsession.beginTransaction();
return (Vendor) slsession.createQuery("from Vendor"
+ " where code = :code")
.setParameter("code", code)
.uniqueResult();
} catch (HibernateException e) {
e.printStackTrace();
return null;
} finally {
if (slsession != null && tx != null) {
tx.commit();
slsession.close();
}
}
}
Could you suggest what is wrong?