The first problem in your mapping is that you are using hibernate's connection pool with a JTA transaction manager. JTA is a global transaction manager and hibernate's connection pool is local to hibernate. I am not aware if hibernate is actually synchronizing this with global transactions. Second you are getting a user transaction but you are not starting it.
Take a look at this post. It should give you an idea how to setup a JTA transaction environment:
http://forum.hibernate.org/viewtopic.ph ... highlight=
Farzad-