我的 LDAP 的人员条目超过 10万,但当我输入搜索查询时,我只是接收2000 条目。
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
constraints.setCountLimit(1);//pageSize
NamingEnumeration<SearchResult> results = ctx.search("DC=YourDomain,DC=com", filterQuery, constraints);
while (results != null && results.hasMore()) {
person = new Person();
Attributes attrs = ((SearchResult) results.next()).getAttributes();
person.setEmail(attrs.get("email").toString());
person.setEmployee_id(attrs.get("employee_id").toString());
person.setGuid(attrs.get("guid").toString());
person.setId(Integer.parseInt(attrs.get("id").toString()));
person.setName(attrs.get("name").toString());
person.setPhone(attrs.get("phone").toString());
person.setPpid(attrs.get("ppid").toString());
result.add(person);
}
抛出异常 -
javax.naming.SizeLimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded];
答案 0 :(得分:0)
javax.naming.SizeLimitExceededException
表示您已超出尺寸相关限制,可以在搜索选项中设置,也可以由LDAP实施设置。
您已指定constraints.setCountLimit(1);
,表示您只询问一个结果(请参阅javadoc here )。值0
表示对象检索没有限制。
我不知道它为什么检索2000个条目,但您可以尝试放置0
并查看它是否有效,其他情况下,您将不得不看到LDAP服务器配置,因为它可能会忽略{ {1}}选项。
答案 1 :(得分:0)
Java或更多可能是服务器限制了您一次可以检索的搜索结果的数量。
您需要查看paged results control。
您无法在一次操作中检索所有100,000个条目,并且存在很大的风险,即他们无论如何都不能适应内存。无论如何,正确配置的服务器都无法让您尝试。