diff --git a/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBDirectory.java b/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBDirectory.java index 8b920d9..ef5401d 100644 --- a/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBDirectory.java +++ b/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBDirectory.java @@ -30,6 +30,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +import com.mongodb.MongoClient; import org.nuxeo.ecm.core.cache.CacheService; import org.nuxeo.ecm.core.schema.SchemaManager; import org.nuxeo.ecm.core.schema.types.Schema; @@ -54,6 +55,8 @@ public class MongoDBDirectory extends AbstractDirectory { protected boolean initialized; + protected MongoClient client; + public MongoDBDirectory(MongoDBDirectoryDescriptor descriptor) { super(descriptor, MongoDBReference.class); @@ -77,6 +80,7 @@ public class MongoDBDirectory extends AbstractDirectory { countersCollectionName = getName() + ".counters"; + client = MongoDBConnectionHelper.newMongoClient(descriptor.getServerUrl()); } @Override @@ -152,4 +156,15 @@ public class MongoDBDirectory extends AbstractDirectory { public String getCountersCollectionName() { return countersCollectionName; } + + @Override + public void shutdown() { + super.shutdown(); + client.close(); + } + + protected MongoClient getClient() { + return client; + } + } diff --git a/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBSession.java b/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBSession.java index 935c103..a1a7a43 100644 --- a/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBSession.java +++ b/nuxeo-services/nuxeo-platform-directory/nuxeo-platform-directory-mongodb/src/main/java/org/nuxeo/directory/mongodb/MongoDBSession.java @@ -72,8 +72,6 @@ import com.mongodb.client.result.UpdateResult; */ public class MongoDBSession extends BaseSession { - protected MongoClient client; - protected String dbName; protected String countersCollectionName; @@ -81,7 +79,6 @@ public class MongoDBSession extends BaseSession { public MongoDBSession(MongoDBDirectory directory) { super(directory, MongoDBReference.class); MongoDBDirectoryDescriptor desc = directory.getDescriptor(); - client = MongoDBConnectionHelper.newMongoClient(desc.getServerUrl()); dbName = desc.getDatabaseName(); countersCollectionName = directory.getCountersCollectionName(); } @@ -315,7 +312,6 @@ public class MongoDBSession extends BaseSession { @Override public void close() throws DirectoryException { - client.close(); getDirectory().removeSession(this); } @@ -346,7 +342,7 @@ public class MongoDBSession extends BaseSession { * @return the MongoDB collection */ public MongoCollection getCollection(String collection) { - return MongoDBConnectionHelper.getCollection(client, dbName, collection); + return MongoDBConnectionHelper.getCollection(getClient(), dbName, collection); } /** @@ -365,7 +361,7 @@ public class MongoDBSession extends BaseSession { * @return true if the server has the collection, false otherwise */ public boolean hasCollection(String collection) { - return MongoDBConnectionHelper.hasCollection(client, dbName, collection); + return MongoDBConnectionHelper.hasCollection(getClient(), dbName, collection); } protected DocumentModel fieldMapToDocumentModel(Map fieldMap) { @@ -377,4 +373,8 @@ public class MongoDBSession extends BaseSession { return createEntryModel(null, schemaName, id, fieldMap, isReadOnly()); } + protected MongoClient getClient() { + return getDirectory().getClient(); + } + }