diff --git a/core/src/main/java/org/springframework/ldap/pool/validation/DefaultDirContextValidator.java b/core/src/main/java/org/springframework/ldap/pool/validation/DefaultDirContextValidator.java index 22f31f99f0..53db23ed15 100644 --- a/core/src/main/java/org/springframework/ldap/pool/validation/DefaultDirContextValidator.java +++ b/core/src/main/java/org/springframework/ldap/pool/validation/DefaultDirContextValidator.java @@ -22,6 +22,7 @@ import org.springframework.util.Assert; import javax.naming.NamingEnumeration; +import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; @@ -165,9 +166,10 @@ public void setSearchControls(SearchControls searchControls) { public boolean validateDirContext(DirContextType contextType, DirContext dirContext) { Assert.notNull(contextType, "contextType may not be null"); Assert.notNull(dirContext, "dirContext may not be null"); - + + NamingEnumeration searchResults = null; try { - final NamingEnumeration searchResults = dirContext.search(this.base, this.filter, this.searchControls); + searchResults = dirContext.search(this.base, this.filter, this.searchControls); if (searchResults.hasMore()) { this.logger.debug("DirContext '{}' passed validation.", dirContext); @@ -179,6 +181,14 @@ public boolean validateDirContext(DirContextType contextType, DirContext dirCont this.logger.debug("DirContext '{}' failed validation with an exception.", dirContext, e); return false; } + finally { + if (searchResults != null) { + try { + searchResults.close(); + } catch (NamingException namingException) { + } + } + } this.logger.debug("DirContext '{}' failed validation.", dirContext); return false; diff --git a/core/src/main/java/org/springframework/ldap/pool2/validation/DefaultDirContextValidator.java b/core/src/main/java/org/springframework/ldap/pool2/validation/DefaultDirContextValidator.java index 716fb97eb6..8fb655c81d 100644 --- a/core/src/main/java/org/springframework/ldap/pool2/validation/DefaultDirContextValidator.java +++ b/core/src/main/java/org/springframework/ldap/pool2/validation/DefaultDirContextValidator.java @@ -22,6 +22,7 @@ import org.springframework.util.Assert; import javax.naming.NamingEnumeration; +import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; @@ -166,12 +167,13 @@ public boolean validateDirContext(DirContextType contextType, DirContext dirCont Assert.notNull(contextType, "contextType may not be null"); Assert.notNull(dirContext, "dirContext may not be null"); + NamingEnumeration searchResults = null; try { - final NamingEnumeration searchResults = dirContext.search(this.base, this.filter, this.searchControls); + searchResults = dirContext.search(this.base, this.filter, this.searchControls); if (searchResults.hasMore()) { this.logger.debug("DirContext '{}' passed validation.", dirContext); - + return true; } } @@ -179,6 +181,14 @@ public boolean validateDirContext(DirContextType contextType, DirContext dirCont this.logger.debug("DirContext '{}' failed validation with an exception.", dirContext, e); return false; } + finally { + if (searchResults != null) { + try { + searchResults.close(); + } catch (NamingException namingException) { + } + } + } this.logger.debug("DirContext '{}' failed validation.", dirContext); return false;