@Override public ResourceReference<EntityManager> createResource() { final TransactionScopedEntityManager result = new TransactionScopedEntityManager(scopedPuName, new HashMap<>(), entityManagerFactory, context.synchronization(), transactionSynchronizationRegistry, transactionManager); return new SimpleResourceReference<EntityManager>(result); } }
@Override protected EntityManager getEntityManager() { EntityManager entityManager; boolean isInTx; isInTx = TransactionUtil.isInTx(transactionManager); if (isInTx) { entityManager = getOrCreateTransactionScopedEntityManager(emf, puScopedName, properties, synchronizationType); } else { entityManager = NonTxEmCloser.get(puScopedName); if (entityManager == null) { entityManager = createEntityManager(emf, properties, synchronizationType); NonTxEmCloser.add(puScopedName, entityManager); } } return entityManager; }
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { // read all non-transient fields in.defaultReadObject(); final ServiceController<?> controller = currentServiceContainer().getService(JPAServiceNames.getPUServiceName(puScopedName)); final PersistenceUnitServiceImpl persistenceUnitService = (PersistenceUnitServiceImpl) controller.getService(); transactionManager = (TransactionManager) currentServiceContainer().getService(TransactionManagerService.SERVICE_NAME).getValue(); transactionSynchronizationRegistry = (TransactionSynchronizationRegistry) currentServiceContainer().getService(TransactionSynchronizationRegistryService.SERVICE_NAME).getValue(); emf = persistenceUnitService.getEntityManagerFactory(); }
EntityManager entityManager = TransactionUtil.getTransactionScopedEntityManager(puScopedName, transactionSynchronizationRegistry); if (entityManager == null) { entityManager = createEntityManager(emf, properties, synchronizationType); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf("%s: created entity manager session %s", TransactionUtil.getEntityManagerDetails(entityManager, scopedPuName), testForMixedSynchronizationTypes(emf, entityManager, puScopedName, synchronizationType, properties); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf("%s: reuse entity manager session already in tx %s", TransactionUtil.getEntityManagerDetails(entityManager, scopedPuName),
private EntityManager createEntityManager( EntityManagerFactory emf, Map properties, final SynchronizationType synchronizationType) { // only JPA 2.1 applications can specify UNSYNCHRONIZED. // Default is SYNCHRONIZED if synchronizationType is not passed to createEntityManager if (SynchronizationType.UNSYNCHRONIZED.equals(synchronizationType)) { // properties are allowed to be be null in jpa 2.1 return unsynchronizedEntityManagerWrapper(emf.createEntityManager(synchronizationType, properties)); } if (properties != null && properties.size() > 0) { return emf.createEntityManager(properties); } return emf.createEntityManager(); }
EntityManager entityManager = TransactionUtil.getTransactionScopedEntityManager(puScopedName, transactionSynchronizationRegistry); if (entityManager == null) { entityManager = createEntityManager(emf, properties, synchronizationType); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf("%s: created entity manager session %s", TransactionUtil.getEntityManagerDetails(entityManager, scopedPuName), testForMixedSynchronizationTypes(emf, entityManager, puScopedName, synchronizationType, properties); if (ROOT_LOGGER.isDebugEnabled()) { ROOT_LOGGER.debugf("%s: reuse entity manager session already in tx %s", TransactionUtil.getEntityManagerDetails(entityManager, scopedPuName),
private EntityManager createEntityManager( EntityManagerFactory emf, Map properties, final SynchronizationType synchronizationType) { // only JPA 2.1 applications can specify UNSYNCHRONIZED. // Default is SYNCHRONIZED if synchronizationType is not passed to createEntityManager if (SynchronizationType.UNSYNCHRONIZED.equals(synchronizationType)) { // properties are allowed to be be null in jpa 2.1 return unsynchronizedEntityManagerWrapper(emf.createEntityManager(synchronizationType, properties)); } if (properties != null && properties.size() > 0) { return emf.createEntityManager(properties); } return emf.createEntityManager(); }
@Override public void inject(final PersistenceUnitServiceImpl value) throws InjectionException { binderService.getManagedObjectInjector().inject(new ValueManagedReferenceFactory( new ImmediateValue<Object>( new TransactionScopedEntityManager( pu.getScopedPersistenceUnitName(), Collections.emptyMap(), value.getEntityManagerFactory(), SynchronizationType.SYNCHRONIZED, transactionSynchronizationRegistry, transactionManager)))); }
@Override protected EntityManager getEntityManager() { EntityManager entityManager; boolean isInTx; isInTx = TransactionUtil.isInTx(transactionManager); if (isInTx) { entityManager = getOrCreateTransactionScopedEntityManager(emf, puScopedName, properties, synchronizationType); } else { entityManager = NonTxEmCloser.get(puScopedName); if (entityManager == null) { entityManager = createEntityManager(emf, properties, synchronizationType); NonTxEmCloser.add(puScopedName, entityManager); } } return entityManager; }
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { // read all non-transient fields in.defaultReadObject(); final ServiceController<?> controller = currentServiceContainer().getService(JPAServiceNames.getPUServiceName(puScopedName)); final PersistenceUnitServiceImpl persistenceUnitService = (PersistenceUnitServiceImpl) controller.getService(); transactionManager = ContextTransactionManager.getInstance(); transactionSynchronizationRegistry = (TransactionSynchronizationRegistry) currentServiceContainer().getService(JPAServiceNames.TRANSACTION_SYNCHRONIZATION_REGISTRY_SERVICE).getValue(); emf = persistenceUnitService.getEntityManagerFactory(); }
@Override public void inject(final PersistenceUnitServiceImpl value) throws InjectionException { binderService.getManagedObjectInjector().inject(new ValueManagedReferenceFactory( new ImmediateValue<Object>( new TransactionScopedEntityManager( pu.getScopedPersistenceUnitName(), Collections.emptyMap(), value.getEntityManagerFactory(), SynchronizationType.SYNCHRONIZED, transactionSynchronizationRegistry, transactionManager)))); }
@Override public EntityManager resolvePersistenceContext(InjectionPoint injectionPoint) { //TODO: cache this stuff final PersistenceContext context = injectionPoint.getAnnotated().getAnnotation(PersistenceContext.class); if (context == null) { throw WeldMessages.MESSAGES.annotationNotFound(PersistenceContext.class, injectionPoint.getMember()); } final String scopedPuName = getScopedPUName(deploymentUnit, context.unitName()); final ServiceName persistenceUnitServiceName = PersistenceUnitServiceImpl.getPUServiceName(scopedPuName); final ServiceController<?> serviceController = serviceRegistry.getRequiredService(persistenceUnitServiceName); //now we have the service controller, as this method is only called at runtime the service should //always be up PersistenceUnitServiceImpl persistenceUnitService = (PersistenceUnitServiceImpl) serviceController.getValue(); return new TransactionScopedEntityManager(scopedPuName, new HashMap<Object, Object>(), persistenceUnitService.getEntityManagerFactory()); }
TransactionManager transactionManager = ContextTransactionManager.getInstance(); if (type.equals(PersistenceContextType.TRANSACTION)) { entityManager = new TransactionScopedEntityManager(unitName, properties, emf, synchronizationType, tsr, transactionManager); if (ROOT_LOGGER.isDebugEnabled()) ROOT_LOGGER.debugf("created new TransactionScopedEntityManager for unit name=%s", unitName);
TransactionManager transactionManager = (TransactionManager) serviceRegistry.getRequiredService(TransactionManagerService.SERVICE_NAME).getValue(); if (type.equals(PersistenceContextType.TRANSACTION)) { entityManager = new TransactionScopedEntityManager(unitName, properties, emf, synchronizationType, tsr, transactionManager); if (ROOT_LOGGER.isDebugEnabled()) ROOT_LOGGER.debugf("created new TransactionScopedEntityManager for unit name=%s", unitName);