LDAP: How to return more than 1000 results (java)(LDAP:如何返回超过 1000 个结果(java))
问题描述
我正在使用来自此站点的 LDAP SDK:https://www.unboundid.com/products/ldap-sdk/ .我想做一个返回很多条目的搜索操作.
I am using the LDAP SDK from this site: https://www.unboundid.com/products/ldap-sdk/ . I would like to make a search operation which returns a lot of entries.
根据常见问题解答网站,(https://www.unboundid.com/products/ldap-sdk/docs/ldapsdk-faq.php#search )我必须使用 SearchResultListener 实现.
According to the FAQ's site, ( https://www.unboundid.com/products/ldap-sdk/docs/ldapsdk-faq.php#search ) I have to use a SearchResultListener implementation.
这就是我所做的:
public class UpdateThread extends Thread implements SearchResultListener {
...
// create request
final SearchRequest request = new SearchRequest(this, instance.getBaseDN(),SearchScope.SUB, filter);
// Setting size limit of results.
request.setSizeLimit(2000);
...
// Get every result one by one.
@Override
public void searchEntryReturned(SearchResultEntry arg0) {
System.out.println("entry "+arg0.getDN());
}
问题是searchEntryReturned"最多返回 1000 个结果.即使我将大小限制设置为2000".
The problem is that "searchEntryReturned" returns a maximum of 1000 results. Even if I set the size limit to "2000".
推荐答案
虽然几乎可以肯定服务器强制执行 1000 个条目的大小限制,但有可能通过分多个部分发出请求来解决这个问题.
Although it's almost certainly the case that the server is enforcing the size limit of 1000 entries, there are potentially ways to get around that by issuing the request in multiple parts.
如果服务器支持使用简单的分页结果控件(如 RFC 2696 中定义并在 LDAP SDK 中支持,根据 https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/controls/SimplePagedResultsControl.html),那么您可以使用它来遍历包含指定数量条目的页面"中的结果.
If the server supports the use of the simple paged results control (as defined in RFC 2696 and supported in the LDAP SDK as per https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/controls/SimplePagedResultsControl.html), then you can use it to iterate through the results in "pages" containing a specified number of entries.
或者,虚拟列表视图 (VLV) 请求控制 (https://www.unboundid.com/products/ldap-sdk/docs/javadoc/index.html?com/unboundid/ldap/sdk/controls/VirtualListViewRequestControl.html) 可以使用,但我可能只建议如果服务器不支持简单的分页结果控件,因为 VLV 请求控件还要求对结果进行排序,并且这可能需要特殊配置服务器或一些非常昂贵的处理,以便能够为请求提供服务.
Alternately, the virtual list view (VLV) request control (https://www.unboundid.com/products/ldap-sdk/docs/javadoc/index.html?com/unboundid/ldap/sdk/controls/VirtualListViewRequestControl.html) could be used, but I would probably only recommend that if the server doesn't support the simple paged results control because the VLV request control also requires that the results be sorted, and that likely either requires special configuration in the server or some pretty expensive processing in order to be able to service the request.
这篇关于LDAP:如何返回超过 1000 个结果(java)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:LDAP:如何返回超过 1000 个结果(java)


- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01