J'injectais objets EntityManager dans apatrides EJB3 haricots (qui agissent comme objets DAO et chacun donnent accès à une table de base de données différente). Le déploiement est dans JBoss AS 7.Combien d'EntityManagers sont injectés pour un PersistenceContext donné?
I code, puis ajouté à l'aide System.identityHashCode dans les méthodes EJB3 haricots pour voir les différentes instances des EntityManagers injectent (l'espoir de voir la même instance dans tous OTI). Par exemple. comme:
@Stateless
public class AFacade {
@PersistenceContext(unitName="foo")
EntityManager em;
public List<A> findAll() {
l.info("entity manager is: "+System.identityHashCode(em)+" class is: "+em.getClass().getSimpleName());
...
}
Cependant, ce que je remarqué est que chaque DAO (par exemple AFacade, BFacade et ainsi de suite) a été injecté avec un autre EntityManager (tel que rapporté par identityHashCode) bien le PersistenceContext était le même. La classe d'implémentation était TransactionScopedEntityManager dans tous les cas.
Je ne sais pas pourquoi ces différents objets EntityManager sont injectés, si c'est quelque chose qui devrait me concerner ou non. En outre, je comprends que le conteneur EJB3 peut effectivement injecter des proxies à l'entité EntityManager de sorte que ces différentes instances peuvent effectivement être des proxies à un seul EntityManager.