Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/backend/SedDBSessionHolder.java @ 8566:fe7e9da6312a
(issue1797) Move close into session release and guard it.
To avoid leaking open and Held sessions we centrally close
the session in the SessionHolder on release.
This also removes some duplicated code in SedDBSessionHolder
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 24 Feb 2015 17:16:14 +0100 |
parents | 4c3ccf2b0304 |
children | 0d711ecbcd49 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/backend/SedDBSessionHolder.java Tue Feb 17 13:58:23 2015 +0100 +++ b/backend/src/main/java/org/dive4elements/river/backend/SedDBSessionHolder.java Tue Feb 24 17:16:14 2015 +0100 @@ -13,39 +13,16 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; -public class SedDBSessionHolder +public class SedDBSessionHolder extends SessionHolder { private static Logger log = Logger.getLogger(SedDBSessionHolder.class); - public static final ThreadLocal<Session> HOLDER = - new ThreadLocal<Session>() { - @Override - protected Session initialValue() { - return create(); - } - }; - - private SedDBSessionHolder() { - } - public synchronized static Session create() { log.debug("create"); SessionFactory sessionFactory = SessionFactoryProvider.getSedDBSessionFactory(); return sessionFactory.openSession(); } - - public static Session acquire() { - log.debug("acquire"); - Session session = create(); - HOLDER.set(session); - return session; - } - - public static void release() { - log.debug("release"); - HOLDER.remove(); - } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :