From 86ac81af5aabece9d6c1214fb1e3578280bbe76f Mon Sep 17 00:00:00 2001 From: Laurent Pireyn Date: Thu, 29 Mar 2012 14:47:18 +0200 Subject: [PATCH] Ensure Mongo is closed when MongoFactoryBean is destroyed --- .../data/mongodb/core/MongoFactoryBean.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoFactoryBean.java index 205e72c9c3..0687d8019c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoFactoryBean.java @@ -18,6 +18,7 @@ import java.util.Arrays; import java.util.List; +import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.dao.DataAccessException; import org.springframework.dao.support.PersistenceExceptionTranslator; @@ -36,7 +37,7 @@ * @author Oliver Gierke * @since 1.0 */ -public class MongoFactoryBean implements FactoryBean, PersistenceExceptionTranslator { +public class MongoFactoryBean implements FactoryBean, DisposableBean, PersistenceExceptionTranslator { private MongoOptions mongoOptions; private String host; @@ -47,6 +48,8 @@ public class MongoFactoryBean implements FactoryBean, PersistenceExceptio private PersistenceExceptionTranslator exceptionTranslator = new MongoExceptionTranslator(); + private Mongo mongo; + public void setMongoOptions(MongoOptions mongoOptions) { this.mongoOptions = mongoOptions; } @@ -82,8 +85,6 @@ public void setExceptionTranslator(PersistenceExceptionTranslator exceptionTrans public Mongo getObject() throws Exception { - Mongo mongo; - ServerAddress defaultOptions = new ServerAddress(); if (mongoOptions == null) { @@ -127,6 +128,12 @@ public boolean isSingleton() { return true; } + public void destroy() throws Exception { + if (this.mongo != null) { + this.mongo.close(); + } + } + /* * (non-Javadoc) * @see org.springframework.dao.support.PersistenceExceptionTranslator#translateExceptionIfPossible(java.lang.RuntimeException)