2011-03-31 18 views
14

Básicamente recorro el árbol de LDAP en Active Directory.JNDI con Active Directory PartialResultException

En cada nivel, consulto "(objectClass=*)". Cuando hago esto en la raíz, por ejemplo, "dc=example,dc=com" obtengo la excepción a continuación. Esto funciona bien en nuestras otras instancias de LDAP. Por alguna razón, solo en nuestro servidor de Active Directory obtengo esta excepción. También recibo la misma excepción cuando uso JXplorer en nuestro servidor de Active Directory.

Al leer en línea, encontré que la gente decía que debería activar las siguientes, no estoy seguro de lo que eso significa ... Así que en mi objeto de control (javax.naming.directory.SearchControls) que paso con la consulta llamo searchControls.setDerefLinkFlag(true). También intenté configurarlo en false con el mismo resultado. ¿Alguna sugerencia sobre qué más podría causar esto? ¿Tal vez cómo podría arreglarlo?

Nota: En este post he cambiado el baseDn de dc=<my company domain> por ejemplo para la privacidad de mi empresa.

javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'dc=example,dc=com' 
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820) 
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794) 
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1826) 
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749) 
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368) 
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338) 
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:321) 
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:248) 
at com.motio.pi.gui.panels.useraccess.ldap.LDAPConnector.query(LDAPConnector.java:262) 
at com.motio.pi.gui.selector.directory.CognosDirectoryBrowserController.expandCognosTreeNode(CognosDirectoryBrowserController.java:99) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.motio.pi.utils.PIThreadDelegate$1.run(PIThreadDelegate.java:54) 
at java.lang.Thread.run(Thread.java:662) 

Respuesta

31

Así que cuando estaba creando mi contexto de nombres con el método:

javax.naming.ldap.InitialLdapContext.InitialLdapContext(
    Hashtable<?, ?> environment, Control[] connCtls) 

En el argumento environment no es una propiedad con el nombre Context.REFERRAL y su valor se debe establecer en: follow. Este fue el escenario que necesitaba.

+2

@startoftext: de curso que resuelve el problema PartialResultException, pero hace que la búsqueda más lenta. Por favor, consulte http://stackoverflow.com/questions/14136091/ldap-search-is-very-slow. De hecho, con 'seguir' lleva 4 segundos y sin 'seguir' me lleva 1 segundo. Por favor, consejo, si tiene alguna solución para ello. –

+0

@Karthik Bose Ya no estoy trabajando con ldap, así que lo siento, no puedo ayudar. – startoftext

+0

(para los demás) Si la solución anterior no funciona, puede probar las siguientes 2 cosas: ** (1) ** Sea más específico cuando mencione el nombre (Ej: 'OU = Cuentas, DC = x, DC = y' en lugar de 'DC = x, DC = y'. ** (2) ** Cambie el número de puerto LDAP a ** 3268 ** (en lugar de ** 389 **) –

Cuestiones relacionadas