netscape.ldap.LDAPException:错误结果(4);在Java中使用netscape.jar时,Sizelimit超出了

时间:2013-10-24 09:22:44

标签: java ldap opendir

我在Java中搜索LDAP时遇到异常。它会获取许多记录,但在最后它会抛出异常。

netscape.ldap.LDAPException: error result (4); Sizelimit exceeded
    at netscape.ldap.LDAPConnection.checkMsg(LDAPConnection.java:4880)
    at netscape.ldap.LDAPConnection.checkSearchMsg(LDAPConnection.java:2638)
    at netscape.ldap.LDAPSearchResults.fetchResult(LDAPSearchResults.java:548)
    at netscape.ldap.LDAPSearchResults.hasMoreElements(LDAPSearchResults.java:456)

我尝试过以下选项。

1.getConnection().setOption(LDAPv2.SIZELIMIT,new Integer(0));
  getConnection().setOption(LDAPv2.TIMELIMIT,new Integer(0));


2. LDAPSearchConstraints ldapSearchConst = getConnection().getSearchConstraints();
   ldapSearchConst.setMaxResults(-1);
   ldapSearchConst.setTimeLimit(-1);

3. Both 1 and 2 together

对于上述选项,只返回的记录数不同,但异常不会消失。任何人都可以帮助我。非常感谢

2 个答案:

答案 0 :(得分:2)

来自RFC4511:

大小限制,限制因搜索而返回的最大条目数。此字段中的值为零表示没有客户端请求的大小限制限制对搜索有效。 服务器也可以强制执行最多返回的条目。

#1中的大小限制是客户端请求的大小限制,它不能覆盖服务器端时间限制,在RFC4511的上述引用中引用。无论客户端请求的时间限制包含什么值,该值都不能覆盖服务器实施。

另见

答案 1 :(得分:0)

您的过滤器返回的记录多于预期的最大记录数。

您应该缩小或优化搜索范围,或者可以增加ldap服务器中的最大提取大小。 (您需要覆盖默认值)。