boolean extended, String unitName) throws IllegalStateException {
if(!!!isTransactionActive())
return super.getEntityManager(emf, props, extended, unitName);
JTAPersistenceContextManager mgr = ariesJTARegistry.getService();
if(mgr == null)
throw new IllegalStateException("No JTAPersistenceContextManager service available");
//Check if we, or OpenEJB, already have a context
EntityManager ariesEM = mgr.getExistingPersistenceContext(emf);
EntityManager openEjbEM = (EntityManager) OSGiTransactionManager.get().
getResource(new EntityManagerTxKey(emf));
if(ariesEM == null) {
if(openEjbEM == null) {
//If both are null then it's easier to let OpenEJB win and push the PC into Aries
openEjbEM = super.getEntityManager(emf, props, extended, unitName);
}
mgr.manageExistingPersistenceContext(emf, openEjbEM);
ariesEM = openEjbEM;
} else {
//We have an Aries EM, if OpenEJB doesn't then sort it out, if it does they should be the same
if(openEjbEM == null){
if(extended) {