aboutsummaryrefslogtreecommitdiff
path: root/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java')
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java38
1 files changed, 24 insertions, 14 deletions
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
index 4bb0a08ea..d3ee1442e 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
@@ -8,6 +8,7 @@ import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.hibernate.HibernateException;
+import org.hibernate.Session;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
@@ -44,10 +45,8 @@ public final class ConfigurationDBUtils {
entitymanagerfactory =
Persistence.createEntityManagerFactory("at.gv.egovernment.moa.id.commons.db.dao.config",
props);
-
-
-
- Logger.debug("Initial session factory successfully created.");
+
+ Logger.debug("Initial ConfigDB session factory successfully created.");
} catch (Throwable ex) {
@@ -72,10 +71,21 @@ public final class ConfigurationDBUtils {
}
EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
- // Open a new Session, if this Thread has none yet
- if (session == null || !session.isOpen()) {
- session = getNewSession();
- }
+
+ if (session != null && session.isOpen()) {
+
+ //maybe a hack, but sometimes we do not know if the session is closed (session already closed but isOpen()=true)
+ try {
+ javax.persistence.Query query = session.createQuery("select userdatabase from UserDatabase userdatabase");
+ query.getResultList();
+
+ } catch (Throwable e) {
+ session = getNewSession();
+ }
+
+ } else
+ session = getNewSession();
+
return session;
}
@@ -88,10 +98,10 @@ public final class ConfigurationDBUtils {
}
EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
if (session != null ) {
- Logger.warn("Previous session has not been closed; closing session now.");
+ Logger.warn("Previous session has not been closed; closing ConfigDB session now.");
closeSession();
}
- Logger.debug("Opening new hibernate session...");
+ Logger.debug("Opening new ConfigDB hibernate session...");
try {
session = entitymanagerfactory.createEntityManager();
THREAD_LOCAL_CONFIG.set(session);
@@ -114,7 +124,7 @@ public final class ConfigurationDBUtils {
Logger.warn("Session is being automatically handled by hibernate. Therefore the current session cannot be closed on demand.");
return;
}
- Logger.debug("Closing current hibernate session...");
+ Logger.debug("Closing current ConfigDB hibernate session...");
EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
THREAD_LOCAL_CONFIG.set(null);
if (session != null) {
@@ -144,7 +154,7 @@ public final class ConfigurationDBUtils {
return true;
} catch(HibernateException e) {
- Logger.warn("Error during database saveOrUpdate. Rollback.", e);
+ Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
tx.rollback();
throw new MOADatabaseException(e);
}
@@ -171,7 +181,7 @@ public final class ConfigurationDBUtils {
return true;
} catch(HibernateException e) {
- Logger.warn("Error during database saveOrUpdate. Rollback.", e);
+ Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
tx.rollback();
throw new MOADatabaseException(e);
}
@@ -194,7 +204,7 @@ public final class ConfigurationDBUtils {
return true;
} catch(HibernateException e) {
- Logger.warn("Error during database delete. Rollback.", e);
+ Logger.warn("Error during Config database delete. Rollback.", e);
tx.rollback();
return false;
}