example code active java ldap spring-ldap

java - code - Spring LDAP: código de error 4-Sizelimit excedido-al establecer countLimit en 1



spring security ldap java config (3)

Utilizando Spring-LDAP 1.3.1 intenté leer el contenido de un LDAP y obtuve el siguiente error:

LDAP: código de error 4 - Sizelimit excedido

Después de buscar cómo limitar el tamaño del resultado, descubrí que la clase SearchControls es responsable de ello.

Así que ahora mi código se ve así:

SearchControls controls = new SearchControls(); controls.setCountLimit(1); ContextMapper mapper = new ContextMapper() { public Object mapFromContext(Object ctx) { DirContextAdapter adapter = (DirContextAdapter) ctx; Attributes attrs = adapter.getAttributes(); try { return attrs.get("cn").get(); } catch (NamingException e) { e.printStackTrace(); return null; } } }; return ldapTemplate.search("OU=system,DC=de", "(objectclass=person)", controls, mapper);

Pero aún así, el mismo error se produce. Por lo tanto, parece que el parámetro de límite de recuento se ignora (no puedo encontrar la referencia a getCountLimit() en Eclipse después de cargar las fuentes de dependencia).

Entonces mi pregunta es, ¿cómo debo establecer el límite de tamaño para la consulta LDAP usando Spring-LDAP?


El límite de tamaño al que se refiere es el límite de tamaño "solicitado por el cliente". No importa a qué el cliente establezca el valor, no puede anular las restricciones de recursos de límite de tamaño del servidor. Los servidores de calidad profesional pueden limitar el número de entradas devueltas de muchas maneras, tal vez su cliente se haya topado con uno de los límites.

ver también


Si establece un límite de tamaño, el servidor limitará el número de respuestas a ese valor. Sin embargo, si hubiera en realidad más respuestas que podrían haber sido devueltas, si / cuando intenta iterar más allá del límite obtendrá esa excepción.

Citando el Javadoc para NamingEnumeration :

En otro ejemplo, si se invocó un método de búsqueda () con un límite de tamaño especificado de ''n''. Si la respuesta consiste en más que ''n'' resultados, search () primero devolverá una NamingEnumeration. Cuando se devuelve el n-ésimo resultado invocando next () en NamingEnumeration, se lanza una excepción SizeLimitExceedException cuando se invoca hasMore ().