JNDI with Active Directory PartialResultException

2022-09-03 04:31:48

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

在每个级别,我查询 。当我在根上执行此操作时,例如,我得到下面的异常。这在我们的其他 LDAP 实例上工作正常。由于某种原因,仅在我们的Active Directory服务器上,我才会得到这个例外。在我们的Active Directory服务器上使用JXplorer时,我也得到了同样的例外。"(objectClass=*)""dc=example,dc=com"

通过在线阅读,我发现人们说你应该打开关注,不知道这意味着什么......因此,在我随查询一起传递的控件对象 () 上,我调用 。我也尝试过将其设置为相同的结果。关于还有什么可能导致这种情况的任何建议?也许我该如何解决它?javax.naming.directory.SearchControlssearchControls.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)

答案 1

因此,当我使用该方法创建命名上下文时:

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

在参数中,有一个具有名称的属性,其值应设置为:。这就是我需要的设置。environmentContext.REFERRALfollow


答案 2

如果在以下引用用法(例如:连接超时)时遇到异常,则可以使用引用忽略,但不希望获得部分异常,可以使用 3268 端口号而不是 389,此端口正在使用 ldap 的全局编录。您可以从以下链接中找到信息;

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


推荐