我需要从 LDAP 获取多个条目(> 1000 个用户)。文档 ( http://camel.apache.org/ldap.html ) 说有一个 pageSize 选项可以实现此目的。
页面大小
“指定后,ldap 模块使用分页来检索所有结果(大多数 LDAP 服务器在尝试在一个查询中检索超过 1000 个条目时会抛出异常)。为了能够使用此功能,必须将 LdapContext(DirContext 的子类)作为 ldapServerBean 传入(否则会抛出异常)”
这是什么意思?如何传入 LdapContext 以及如何迭代页面?有人可以给我一个简单的例子,其中许多条目是从 LDAP 获取的吗?
最佳答案
除了指定 pageSize
参数之外,您可能不需要执行其他任何操作。该描述澄清了一个您可能不会遇到的小问题。
ldap
组件不仅限于从 LdapContext
读取,它还可以使用 DirContext
( super 接口(interface))的实例。使用此 super 接口(interface)的实例将有效除了设置pageSize
。如果您遵循 Camel 文档中的示例,您将看到它使用 com.sun.jndi.ldap.LdapCtxFactory 作为上下文 bean 的工厂。此类构建实现 LdapContext
的对象,因此 pageSize
参数应该起作用。
例如,您只需将参数添加到 URI 即可。
Collection<?> results = (Collection<?>) (template
.sendBody(
"ldap:ldapserver?base=ou=mygroup,ou=groups,ou=system&pageSize=1000",
"(member=uid=huntc,ou=users,ou=system)"));
关于java - 在 Apache Camel LDAP 组件中对结果进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163817/