# HG changeset patch # User Sascha L. Teichmann # Date 1302788750 0 # Node ID aeeb9054b7cf417e1a422615166aa0b992522fa0 # Parent 89bd0417418fa8c8230ecea2875a3e2169faa452 Acquire/release sessions in services to avoid db connection leaks. flys-artifacts/trunk@1699 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 89bd0417418f -r aeeb9054b7cf flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu Apr 14 13:36:06 2011 +0000 +++ b/flys-artifacts/ChangeLog Thu Apr 14 13:45:50 2011 +0000 @@ -1,3 +1,9 @@ +2011-04-14 Sascha L. Teichmann + + * trunk/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java, + trunk/src/main/java/de/intevation/flys/artifacts/services/RiverService.java: + Acquire/release sessions in services to avoid db connection leaks. + 2011-04-14 Ingo Weinzierl * src/main/java/de/intevation/flys/artifacts/states/DefaultState.java: diff -r 89bd0417418f -r aeeb9054b7cf flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java Thu Apr 14 13:36:06 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DistanceInfoService.java Thu Apr 14 13:45:50 2011 +0000 @@ -22,7 +22,9 @@ import de.intevation.flys.model.Range; import de.intevation.flys.artifacts.model.AnnotationsFactory; +import de.intevation.flys.artifacts.model.SessionHolder; +import org.hibernate.Session; /** * This service provides information about distances of a specified river. @@ -66,24 +68,31 @@ ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); - List annotations = AnnotationsFactory.getAnnotations(river); - - if (annotations == null || annotations.size() == 0) { - logger.warn("No information found for the specified river!"); - return result; - } - - Element all = ec.create("distances"); + Session session = SessionHolder.acquire(); + try { + List annotations = AnnotationsFactory.getAnnotations(river); - for (Annotation a: annotations) { - Element distance = buildDistanceNode(ec, a); + if (annotations == null || annotations.size() == 0) { + logger.warn("No information found for the specified river!"); + return result; + } - if (distance != null) { - all.appendChild(distance); + Element all = ec.create("distances"); + + for (Annotation a: annotations) { + Element distance = buildDistanceNode(ec, a); + + if (distance != null) { + all.appendChild(distance); + } } + + result.appendChild(all); } - - result.appendChild(all); + finally { + session.close(); + SessionHolder.release(); + } return result; } diff -r 89bd0417418f -r aeeb9054b7cf flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverService.java --- 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 allRivers = RiverFactory.getRivers(); - - Element rivers = ec.create("rivers"); + Session session = SessionHolder.acquire(); + try { + List 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; }