带有Active Directory的JNDI PartialResultException

时间:2011-03-31 19:39:42

标签: java active-directory ldap jndi

我基本上是在Active Directory中走LDAP树。

在每个级别,我都会查询"(objectClass=*)"。当我在根目录"dc=example,dc=com"上执行此操作时,我会得到以下异常。这适用于我们的其他LDAP实例。出于某种原因,仅在我们的Active Directory服务器上出现此异常。在Active Directory服务器上使用JXplorer时,我也会遇到相同的异常。

通过在线阅读,我发现有人说你应该开启关注,不确定这意味着什么...所以在我通过查询传递的控制对象(javax.naming.directory.SearchControls)上我呼叫searchControls.setDerefLinkFlag(true) 。我也尝试将其设置为false,结果相同。关于还有什么可能导致这个问题的任何建议?也许我怎么能解决它?

注意:在这篇文章中,我将baseDn从dc=<my company domain>更改为我公司隐私的示例。

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)

2 个答案:

答案 0 :(得分:31)

所以当我用方法创建我的命名上下文时:

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

在参数environment中,有一个名为Context.REFERRAL的属性,其值应设置为:follow。这是我需要的设置。

答案 1 :(得分:3)

如果你在推荐使用中遇到异常(例如:连接超时)你可以使用引用忽略但你不想得到部分异常你可以使用3268端口号而不是389这个端口正在使用全局目录LDAP。您可以从以下链接中找到信息;

https://technet.microsoft.com/en-us/library/how-global-catalog-servers-work(v=ws.10).aspx