Package 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 managesJpaPersistenceContext
objects, and the underlying persistence context (EntityManager
) instances for a persistentKieSession
and other infrastructure classes that use persistence in KIE projects. (For reference in the following documentation: theEntityManager
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 persistentKieSession
.
ThreadLocal
instances for two things:- The internal Command Scoped
EntityManager
instance.
-
-
Field Summary
Fields Modifier and Type Field Description protected javax.persistence.EntityManager
appScopedEntityManager
protected javax.persistence.EntityManager
cmdScopedEntityManager
protected javax.persistence.EntityManagerFactory
emf
protected org.kie.api.runtime.Environment
env
protected boolean
internalAppScopedEntityManagerFlag
protected boolean
internalCmdScopedEntityManagerFlag
protected org.drools.persistence.api.TransactionManager
txm
-
Constructor Summary
Constructors Constructor Description AbstractPersistenceContextManager(org.kie.api.runtime.Environment env)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
void
endCommandScopedEntityManager()
javax.persistence.EntityManager
getApplicationScopedEntityManager()
javax.persistence.EntityManager
getCommandScopedEntityManager()
protected javax.persistence.EntityManager
getInternalCommandScopedEntityManager()
void
resetApplicationScopedPersistenceContext()
-
-
-
Field Detail
-
env
protected final org.kie.api.runtime.Environment env
-
emf
protected final javax.persistence.EntityManagerFactory emf
-
txm
protected final org.drools.persistence.api.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
-
-
Method Detail
-
getApplicationScopedEntityManager
public javax.persistence.EntityManager getApplicationScopedEntityManager()
-
getCommandScopedEntityManager
public javax.persistence.EntityManager getCommandScopedEntityManager()
-
endCommandScopedEntityManager
public void endCommandScopedEntityManager()
-
dispose
public void dispose()
-
resetApplicationScopedPersistenceContext
public void resetApplicationScopedPersistenceContext()
-
getInternalCommandScopedEntityManager
protected javax.persistence.EntityManager getInternalCommandScopedEntityManager()
-
-