annotate backend/src/main/java/org/dive4elements/river/backend/SedDBSessionHolder.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.backend;
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8576
diff changeset
11 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8576
diff changeset
12 import org.apache.logging.log4j.LogManager;
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import org.hibernate.Session;
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import org.hibernate.SessionFactory;
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
8576
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
17 public class SedDBSessionHolder
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 {
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 private static Logger log =
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8576
diff changeset
20 LogManager.getLogger(SedDBSessionHolder.class);
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
8576
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
22 public static final ThreadLocal<Session> HOLDER =
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
23 new ThreadLocal<Session>() {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
24 @Override
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
25 protected Session initialValue() {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
26 Session session = create();
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
27 log.debug("Initial session value: " + session.hashCode());
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
28 return session;
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
29 }
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
30 };
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
31
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 public synchronized static Session create() {
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 log.debug("create");
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 SessionFactory sessionFactory =
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 SessionFactoryProvider.getSedDBSessionFactory();
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 return sessionFactory.openSession();
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 }
8576
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
38
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
39 public static Session acquire() {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
40 Session session = create();
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
41 log.debug("acquired session: " + session.hashCode());
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
42 HOLDER.set(session);
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
43 return session;
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
44 }
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
45
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
46 public static void release() {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
47 Session session = HOLDER.get();
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
48 if (session != null) {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
49 log.debug("releasing session: " + session.hashCode());
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
50 session.close();
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
51 } else {
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
52 log.error("release() called on NULL session.");
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
53 }
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
54 HOLDER.remove();
0d711ecbcd49 Renable access to seddb sessions
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8566
diff changeset
55 }
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 }
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org