VIVO-823 Close all short-term RDF Services.

Brian Lowe points out that I was creating an additional RDFService and not closing it.
Also, the configuration RDFService wasn't being closed. It wasn't causing a problem because there
is no database connection associated with it, but still it was a potential for problem.
This commit is contained in:
Jim Blake 2014-07-21 11:22:59 -04:00
parent e1bc897154
commit 89416efa77

View file

@ -105,14 +105,19 @@ public class RequestModelsPrep implements Filter {
if (!thisRequestNeedsModels(req) || modelsAreAlreadySetUp(req)) { if (!thisRequestNeedsModels(req) || modelsAreAlreadySetUp(req)) {
filterChain.doFilter(req, resp); filterChain.doFilter(req, resp);
} else { } else {
RDFService rdfService = RDFServiceUtils.getRDFServiceFactory(ctx) RDFService contentRdfService = RDFServiceUtils
.getRDFServiceFactory(ctx, WhichService.CONTENT)
.getShortTermRDFService();
RDFService configurationRdfService = RDFServiceUtils
.getRDFServiceFactory(ctx, WhichService.CONFIGURATION)
.getShortTermRDFService(); .getShortTermRDFService();
try { try {
setUpTheRequestModels(rdfService, req); setUpTheRequestModels(contentRdfService, configurationRdfService, req);
filterChain.doFilter(req, resp); filterChain.doFilter(req, resp);
tearDownTheRequestModels(req); tearDownTheRequestModels(req);
} finally { } finally {
rdfService.close(); contentRdfService.close();
configurationRdfService.close();
} }
} }
} }
@ -139,13 +144,13 @@ public class RequestModelsPrep implements Filter {
} }
} }
private void setUpTheRequestModels(RDFService rawRdfService, private void setUpTheRequestModels(RDFService contentRdfService, RDFService configurationRdfService,
HttpServletRequest req) { HttpServletRequest req) {
VitroRequest vreq = new VitroRequest(req); VitroRequest vreq = new VitroRequest(req);
setRdfServicesAndDatasets(rawRdfService, vreq); setRdfServicesAndDatasets(contentRdfService, vreq);
setRawModels(vreq); setRawModels(contentRdfService, configurationRdfService, vreq);
RDFService rdfService = vreq.getRDFService(); RDFService rdfService = vreq.getRDFService();
@ -181,21 +186,15 @@ public class RequestModelsPrep implements Filter {
vreq.setDataset(dataset); vreq.setDataset(dataset);
} }
private void setRawModels(VitroRequest vreq) { private void setRawModels(RDFService contentRdfService, RDFService configurationRdfService, VitroRequest vreq) {
ModelAccess models = ModelAccess.on(vreq); ModelAccess models = ModelAccess.on(vreq);
RDFService shortTermConfigRdfService = RDFServiceUtils
.getRDFServiceFactory(ctx, WhichService.CONFIGURATION)
.getShortTermRDFService();
ModelMaker configMM = ModelMakerUtils.getShortTermModelMaker(ctx, ModelMaker configMM = ModelMakerUtils.getShortTermModelMaker(ctx,
shortTermConfigRdfService, WhichService.CONFIGURATION); configurationRdfService, WhichService.CONFIGURATION);
models.setModelMaker(CONFIGURATION, configMM); models.setModelMaker(CONFIGURATION, configMM);
RDFService shortTermContentRdfService = RDFServiceUtils
.getRDFServiceFactory(ctx, WhichService.CONTENT)
.getShortTermRDFService();
ModelMaker contentMM = ModelMakerUtils.getShortTermModelMaker(ctx, ModelMaker contentMM = ModelMakerUtils.getShortTermModelMaker(ctx,
shortTermContentRdfService, WhichService.CONTENT); contentRdfService, WhichService.CONTENT);
models.setModelMaker(CONTENT, contentMM); models.setModelMaker(CONTENT, contentMM);
/* /*