]
Scott Marlow closed WFLY-5071.
------------------------------
Resolution: Done
Refactor org.jboss.as.jpa.transaction.TransactionUtil to not use
static globals, use the JPAService singleton instead
---------------------------------------------------------------------------------------------------------------------
Key: WFLY-5071
URL:
https://issues.jboss.org/browse/WFLY-5071
Project: WildFly
Issue Type: Task
Components: JPA / Hibernate
Reporter: Scott Marlow
Assignee: Stuart Douglas
Fix For: 10.0.0.CR1
Perhaps something like the following in TransactionUtil:
{code}
public static TransactionManager getTransactionManager() {
JPAService jpaService =
currentServiceContainer().getService(org.jboss.as.jpa.service.JPAService.SERVICE_NAME);
return jpaService.getTransactionManager();
}
private static ServiceContainer currentServiceContainer() {
if(System.getSecurityManager() == null) {
return CurrentServiceContainer.getServiceContainer();
}
return AccessController.doPrivileged(CurrentServiceContainer.GET_ACTION);
}
{code}
Might want to refactor the callers into TransactionUtil to cache the JPAService, so we
don't have to look it up several times per entity manager invocation. Otherwise, the
service lookup may be done too many times.