我正在尝试搜索LDAP服务器(Active Directory).当我解析搜索结果时,该hasMoreElements方法NamingEnumeration在返回false时需要大约15-20秒才能执行.当它返回true时不是这种情况.有没有办法解决这个问题?
码:
SearchControls ctrl = new SearchControls();
ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(&(objectClass=user("uid"="abc"))";
NamingEnumeration ne = dirContext.search("ldap://abc:389/dc=abc,dc=xy", searchFilter,ctrl);
if (ne != null) {
while (ne.hasMoreElements()) {
//parse results
}
Run Code Online (Sandbox Code Playgroud)
小智 8
在NamingEnumeration打电话时做一些清理hasMoreElements()的最后一次.它还检查是否有其他引用是context-property Context.REFERRAL设置为"follow".在我们的软件中的一个案例中,这恰好引起了所描述的行为:在LDAP上下文中搜索引用时,最后一次调用hasMoreElements()(或者通常比允许更多地hasMore()调用next())导致最多40秒.解决方案是不设置Context.REFERRAL为"跟随".
AD 在 LDAP 查询中返回的对象数量有默认限制。我认为它在 1000 个对象范围内。
如果你点击 1001,你会返回 1000,然后是一个错误,所以我可以看到情况就是这样。
数一下你在测试中拿回了多少个物体,打赌你打败了 1000 个,然后失败了。
| 归档时间: |
|
| 查看次数: |
2574 次 |
| 最近记录: |