org.drools.persistence.jpa
Class AbstractPersistenceContextManager
java.lang.Object
org.drools.persistence.jpa.AbstractPersistenceContextManager
- Direct Known Subclasses:
- JpaPersistenceContextManager
public abstract class AbstractPersistenceContextManager
- extends Object
This class manages JpaPersistenceContext objects, and the underlying persistence context (EntityManager)
instances for a persistent KieSession and other infrastructure classes that use persistence in KIE projects.
(For reference in the following documentation: the EntityManager is the class used to represent a persistence context)
There are 2 issues to take into account when looking at or modifying the code here:
- One of the features made available here is the ability for the user to supply their own (Command Scoped) persistence
context for use by the
KieSession
- However, significant race-conditions arise when a Command Scoped persistence context is used in one persistent
KieSession by multiple threads. In other words, when multiple threads call operations on a Singleton persistent
KieSession.
This class uses ThreadLocal instances for two things:
- The internal Command Scoped
EntityManager instance.
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
env
protected final org.kie.api.runtime.Environment env
emf
protected final javax.persistence.EntityManagerFactory emf
txm
protected final TransactionManager txm
appScopedEntityManager
protected volatile javax.persistence.EntityManager appScopedEntityManager
cmdScopedEntityManager
protected volatile javax.persistence.EntityManager cmdScopedEntityManager
internalAppScopedEntityManagerFlag
protected volatile boolean internalAppScopedEntityManagerFlag
internalCmdScopedEntityManagerFlag
protected volatile boolean internalCmdScopedEntityManagerFlag
AbstractPersistenceContextManager
public AbstractPersistenceContextManager(org.kie.api.runtime.Environment env)
getApplicationScopedEntityManager
public javax.persistence.EntityManager getApplicationScopedEntityManager()
getCommandScopedEntityManager
public javax.persistence.EntityManager getCommandScopedEntityManager()
endCommandScopedEntityManager
public void endCommandScopedEntityManager()
dispose
public void dispose()
getInternalCommandScopedEntityManager
protected javax.persistence.EntityManager getInternalCommandScopedEntityManager()
Copyright © 2001-2015 JBoss by Red Hat. All Rights Reserved.