diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ModelAccess.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ModelAccess.java index 06a886988..e3c128068 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ModelAccess.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ModelAccess.java @@ -293,6 +293,18 @@ public class ModelAccess { } } + // ---------------------------------------------------------------------- + // Close all locally stored models, WADFs, etc. + // ---------------------------------------------------------------------- + + public void close() { + if (this.scope == Scope.REQUEST) { + for (WebappDaoFactory wadf: factoryMap.values()) { + wadf.close(); + } + } + } + // ---------------------------------------------------------------------- // Helper classes // ---------------------------------------------------------------------- diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java index 032795028..e1384d907 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/RequestModelsPrep.java @@ -113,6 +113,7 @@ public class RequestModelsPrep implements Filter { try { setUpTheRequestModels(rdfService, req); filterChain.doFilter(req, resp); + tearDownTheRequestModels(req); } finally { rdfService.close(); } @@ -384,6 +385,10 @@ public class RequestModelsPrep implements Filter { return map; } + private void tearDownTheRequestModels(HttpServletRequest req) { + ModelAccess.on(req).close(); + } + @Override public void destroy() { // Nothing to destroy