I think that the first option was right. If you are running inside a container you should use the container mechanisms to handle transactions.
If the application stops at the ksession creations I supose that means that your transaction manager is failing in some way. Are you sure that it's not logging any failures in the container?
Greetings.