Improve database release/shutdown procedures to reduce occasional Exceptions such as "IllegalStateException: Illegal access:..."
git-svn-id: https://svn.apache.org/repos/asf/roller/trunk@1708083 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
index f2eedf2..f122d54 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
@@ -142,12 +142,17 @@
* Release database session, rolls back any uncommitted changes.
*/
public void release() {
- EntityManager em = getEntityManager(false);
- if (isTransactionActive(em)) {
- em.getTransaction().rollback();
+ try {
+ EntityManager em = getEntityManager(false);
+ if (isTransactionActive(em)) {
+ em.getTransaction().rollback();
+ }
+ em.close();
+ } catch (Exception e) {
+ logger.debug("error during releasing database session", e);
+ } finally {
+ threadLocalEntityManager.remove();
}
- em.close();
- setThreadLocalEntityManager(null);
}
/**
@@ -249,13 +254,6 @@
}
/**
- * Set the current ThreadLocal EntityManager
- */
- private void setThreadLocalEntityManager(EntityManager em) {
- threadLocalEntityManager.set(em);
- }
-
- /**
* Get named query that won't commit changes to DB first (FlushModeType.COMMIT)
* @param queryName the name of the query
* @throws org.apache.roller.weblogger.WebloggerException on any error
@@ -345,4 +343,9 @@
return em.createNamedQuery(queryName);
}
+ public void shutdown() {
+ if (emf != null) {
+ emf.close();
+ }
+ }
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
index c3666c9..a06c4da 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
@@ -119,6 +119,8 @@
// then let parent do its thing
super.shutdown();
+
+ this.strategy.shutdown();
}
}