annotate 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
rev   line source
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.context;
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import org.hibernate.Session;
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import de.intevation.artifacts.CallContext;
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import de.intevation.artifacts.CallContext.Listener;
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
10 import de.intevation.flys.artifacts.model.SessionHolder;
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
11
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 /**
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 * This CallContextListener is used to initialize a ThreadLocal variable in
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 * each CallContext (for each request) that holds Sessions.
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 *
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 */
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 public class SessionCallContextListener implements Listener {
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
21 public static final String SESSION_KEY = "context.session";
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 /** The logger that is used in this class.*/
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 private static Logger logger =
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 Logger.getLogger(SessionCallContextListener.class);
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 public SessionCallContextListener() {
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 }
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 /**
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 * Initializes a ThreadLocal variable that is used to hold sessions.
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 *
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * @param context The CallContext.
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 */
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public void init(CallContext context) {
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 logger.debug("SessionCallContextListener.init");
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
40 Session session = SessionHolder.acquire();
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
42 context.putContextValue(SESSION_KEY, session);
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 }
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 /**
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 * Closes open sessions of the ThreadLocal variable opened in init().
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 *
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 * @param context The CallContext.
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 */
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 public void close(CallContext context) {
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 logger.debug("SessionCallContextListener.close");
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
54 Session session = (Session)context.getContextValue(SESSION_KEY);
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
55 session.close();
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
308
084995dd1c9c Added a session holder to hold hibernate sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 307
diff changeset
57 SessionHolder.release();
307
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 }
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 }
84f8462790cb Added an Implementation of CallContext.Listener to open/close Hibernate Sessions for each request.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org