【问题标题】:netscape.ldap.LDAPException: error result (4); Sizelimit exceeded, when using netscape.jar in Javanetscape.ldap.LDAPException:错误结果(4);在 Java 中使用 netscape.jar 时超出大小限制
【发布时间】:2013-10-24 09:22:43
【问题描述】:

在 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

上述选项只有返回的记录数不同,但异常不会消失。有人可以帮我解决这个问题吗?非常感谢

【问题讨论】:

  • 服务器告诉您您请求的数据过多。您需要细化您的搜索,使其要求的结果更少。
  • 但它返回了一些结果。似乎是客户端的问题
  • 通过检查从服务器返回的实际流量来验证您的假设,例如通过在客户端系统上使用wireshark

标签: java ldap opendir


【解决方案1】:

来自 RFC4511:

限制作为搜索结果返回的最大条目数的大小限制。此字段中的值为零表示对搜索没有客户端请求的大小限制限制。 服务器还可以强制返回最大条目数。

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

另见

【讨论】:

  • 链接失效了,如果你有有效的链接,你能更新一下吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 2015-07-30
    • 1970-01-01
    • 2017-12-19
    • 2023-01-23
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多