Kieran Simpson [http://community.jboss.org/people/kierans] created the 
discussion

"Why do EJBs share EntityManager instances"

To view the discussion, visit: http://community.jboss.org/message/574182#574182

--------------------------------------------------------------
In the application I am developing, the input comes from a Seam UI, where 
messages are placed onto a JMS queue to be processed asynchronously.  Since 
multiple users can use the UI concurrently, multiple messages can be processed 
concurrently by the backends MDB/EJBs.

The DAO layer is comprised of a Stateless Session Bean with the EntityManager 
being injected via the @PersistenceContext annotation.  When a message is 
polled from the queue and processed, the top level EJB coordinator for the 
processing starts a new transaction via the REQUIRES_NEW 
TransactionAttributeType.  However when one thread encounters a DB error, the 
shared EntityManager rolls back all transactions, thus the other threads fail.  
I've done a heap dump analysis with Visual VM and I can see that my DAO 
instances all are being injected with the one instance of 
TransactionScopedEntityManager.

Reading the  
http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/transactions.html
 Hibernate docs, the EntityManager is not thread safe.  Doing a lot of Googling 
I'm seeing a lot of other forum posts on this subject, however a lot of the 
material is years old and thus could be outdated.

Why doesn't JBoss do a similar SharedEntityManager idea like that of Spring, or 
OC4J?  Surely it would be a good idea to have code abstracting away the 
threading concerns of EntityManagers by injecting a wrapper that is thread 
safe, and that delegates to underlying Hibernate EntityManagers.
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/574182#574182]

Start a new discussion in EJB3 at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to