Jetty JTA via JNDI with Spring
Finally got Jetty 8 to have JTA transactions available to Spring via JNDI lookup using Atomikos 3.8 after a lot of trouble. I’m not 100% sure if this is correct but it seems to be working for me.
My main driver was not wanting to have Atomikos classes hardcoded in the spring config. Instead we can just register the Atomikos UserTransactionManager and UserTransactionImp classes in JNDI and have Spring look them up, just like if we were using Websphere, Weblogic, etc. Now I can use Jetty for local development instead of Websphere without any change to my actual code base. (Be warned that I’m not using this in prod.)
Steps:
1) Jetty 8 install
Download, unzip, setup JETTY_HOME var for IntelliJ to use
2) Atomikos 3.8 install
Download, unzip
copy from the Atomikos lib/ directory into Jetty lib/ext/:
geronimo-j2ee-connector_1.5_spec.jar
geronimo-jms_1.1_spec.jar
geronimo-jta_1.0.1B_spec.jar
copy all the JARs from the Atomikos dist/ directory into Jetty lib/ext/.
(Hat tip to this blogpost for helping)
3) Jetty config for JTA (Ref posting that helped)
4) Spring JTA lookup
Spring will lookup using standard JNDI locations of java:/TransactionManager and java:comp/UserTransaction
<tx:jta-transaction-manager/>