diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverService.java @ 314:aeeb9054b7cf

Acquire/release sessions in services to avoid db connection leaks. flys-artifacts/trunk@1699 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 14 Apr 2011 13:45:50 +0000
parents d6197a05a87c
children 4aa078e28cfd
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverService.java	Thu Apr 14 13:36:06 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverService.java	Thu Apr 14 13:45:50 2011 +0000
@@ -17,7 +17,9 @@
 import de.intevation.flys.model.River;
 
 import de.intevation.flys.artifacts.model.RiverFactory;
+import de.intevation.flys.artifacts.model.SessionHolder;
 
+import org.hibernate.Session;
 
 /**
  * This service provides information about the supported rivers by this
@@ -52,18 +54,25 @@
             ArtifactNamespaceContext.NAMESPACE_URI,
             ArtifactNamespaceContext.NAMESPACE_PREFIX);
 
-        List<River> allRivers = RiverFactory.getRivers();
-
-        Element rivers = ec.create("rivers");
+        Session session = SessionHolder.acquire();
+        try {
+            List<River> allRivers = RiverFactory.getRivers();
 
-        for (River river: allRivers) {
-            Element r = ec.create("river");
-            ec.addAttr(r, "name", river.getName(), true);
+            Element rivers = ec.create("rivers");
 
-            rivers.appendChild(r);
+            for (River river: allRivers) {
+                Element r = ec.create("river");
+                ec.addAttr(r, "name", river.getName(), true);
+
+                rivers.appendChild(r);
+            }
+
+            result.appendChild(rivers);
         }
-
-        result.appendChild(rivers);
+        finally {
+            session.close();
+            SessionHolder.release();
+        }
 
         return result;
     }

http://dive4elements.wald.intevation.org