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/>