public static SearchResult searchUnique(String searchFilter, InitialLdapContext ctx) throws IllegalStateException, NamingException { ctx.setRequestControls(null); SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); searchControls.setTimeLimit(1000); NamingEnumeration<?> namingEnum = ctx.search(MessagingServletConfig.ldapBaseDn, searchFilter, searchControls); if (namingEnum.hasMore()) { SearchResult result = (SearchResult) namingEnum.next(); if (namingEnum.hasMore()) { throw new LimitExceededException( "search with filter " + searchFilter + " returned more than 1 result"); } namingEnum.close(); return result; } else { throw new NameNotFoundException("search with filter " + searchFilter + " returned no result"); } }