The hibernate.transaction.auto_close_session should be set to false. Which seems to be the default since your problems got worse when setting it to true. But... take a look at your code again...
Code:
session.beginTransaction();
try
{
session.save(account);
session.getTransaction().commit();
session.close();
return ApplicationResponseEnum.ACCOUNT_CREATED;
}
catch (RuntimeException e)
{
session.getTransaction().rollback();
}
finally
{
//session.close();
}
If the transaction is committed successfully the next line calls session.close(), which is also called a second time in the 'finally' part.