Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/SessionCallContextListener.java @ 308:084995dd1c9c
Added a session holder to hold hibernate sessions.
flys-artifacts/trunk@1689 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 14 Apr 2011 12:08:47 +0000 |
parents | 84f8462790cb |
children | 6d2c8915e22c |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/SessionCallContextListener.java Thu Apr 14 11:18:28 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/SessionCallContextListener.java Thu Apr 14 12:08:47 2011 +0000 @@ -3,13 +3,12 @@ import org.apache.log4j.Logger; import org.hibernate.Session; -import org.hibernate.SessionFactory; - -import de.intevation.flys.backend.SessionFactoryProvider; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallContext.Listener; +import de.intevation.flys.artifacts.model.SessionHolder; + /** * This CallContextListener is used to initialize a ThreadLocal variable in @@ -19,7 +18,7 @@ */ public class SessionCallContextListener implements Listener { - public static final String SESSION_HOLDER_KEY = "context.session.holder"; + public static final String SESSION_KEY = "context.session"; /** The logger that is used in this class.*/ private static Logger logger = @@ -38,16 +37,9 @@ public void init(CallContext context) { logger.debug("SessionCallContextListener.init"); - ThreadLocal<Session> sessionHolder = new ThreadLocal<Session>(); - - SessionFactory sessionFactory = - SessionFactoryProvider.createSessionFactory(); + Session session = SessionHolder.acquire(); - Session session = sessionFactory.openSession(); - - sessionHolder.set(session); - - context.putContextValue(SESSION_HOLDER_KEY, sessionHolder); + context.putContextValue(SESSION_KEY, session); } @@ -59,13 +51,10 @@ public void close(CallContext context) { logger.debug("SessionCallContextListener.close"); - ThreadLocal<Session> sessionHolder = (ThreadLocal<Session>) - context.getContextValue(SESSION_HOLDER_KEY); + Session session = (Session)context.getContextValue(SESSION_KEY); + session.close(); - Session session = sessionHolder.get(); - - session.close(); - sessionHolder.remove(); + SessionHolder.release(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :