You could also use ThreadLocal instances to ensure a copy of the Session, Producer, etc for each thread that needs to use them.
If you want to go this route, take a look at http://community.jboss.org/thread/150988
Thanks Igor. I ended up creating a Spring object pool.