This is a question frequently asked, but not answered. I am having a similar
issue: I need to determine the schema (PersistenceUnit) to use at runtime -
actually on a per request basis.
Has this nut been cracked? Ideally I would like to still be able to use JTA
and let the container take care of the transaction details. Below I try to
summarize the approach I have been trying, but it doesn't feel right. If you
know of any examples or references that address this issue I would be grateful.
I am using jBoss 4.2.1 as it was downloaded with the exception of defining the
data sources, which are all defined in one file, all are local-tx-datasources.
Based on user entered criteria, I need to determine which schema to use. The
structure of each schema is identical so the Entity beans are properly defined
for the each possible schema.
I have been able to get things working for read requests by using a static
EntityFactoryLocator that returns the proper EntityManager given some decision
criteria. Apparently when you use a helper class to get the EntityManager,
your transaction type must be set to RESOURCE-LOCAL. So, the session facade
that wraps the entity calls
EntityFactoryLocator(decisionCriteria).getEntityManager().
When a session facade method needs to do an update, I run into an issue where
the update works in the correct schema, but I am unable to close the
entityManager so the corresponding connection is never released back to the
pool. This is likely related to the fact that I have an EXTENDED persistence
context - that I don't know how to change. My code, in the session facade,
looks like:
// update one entity
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
if (query.executeUpdate() == 1) {
entityManager.commit(); // Blows up if not commented out.
java.sql.SQLException: You cannot commit during a managed transaction!
entityManager.close();
}
else rollback, clean up, and throw some exception
I know I have issues with the above. When in debug mode I see that the
persistenceContext is EXTENDED.
Thanks for looking.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4094300#4094300
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4094300
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user