As you know, it’s is not too difficult to configure transaction management using Spring framework. The only thing, worth to mention, is implementation details, how Spring handles this process.
Spring HAS NO BUILT-IN TRANSACTION MANAGER
For some reason, most developers think that Spring can handle everything; but, actually, this is just an integration layer. When an application activates transaction layer; Spring scans JNDI for a transaction manager, using list of predefined names. These names cover most JEE servers (e.g. weblogic).
Transaction manager discovery class is org.springframework.transaction.jta.JtaTransactionManager and the list of names is
Tomcat is not a full JEE server and has no transaction manager.