JAVA LDAP - 所有数据检索

时间:2015-09-13 06:15:32

标签: java ldap jndi

我的 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];

2 个答案:

答案 0 :(得分:0)

javax.naming.SizeLimitExceededException表示您已超出尺寸相关限制,可以在搜索选项中设置,也可以由LDAP实施设置。

您已指定constraints.setCountLimit(1);,表示您只询问一个结果(请参阅javadoc here )。值0表示对象检索没有限制。

我不知道它为什么检索2000个条目,但您可以尝试放置0并查看它是否有效,其他情况下,您将不得不看到LDAP服务器配置,因为它可能会忽略{ {1}}选项。

答案 1 :(得分:0)

Java或更多可能是服务器限制了您一次可以检索的搜索结果的数量。

您需要查看paged results control

您无法在一次操作中检索所有100,000个条目,并且存在很大的风险,即他们无论如何都不能适应内存。无论如何,正确配置的服务器都无法让您尝试。