2015-05-11 2 views
1

Мне нужно получить несколько записей (более 1000 пользователей) из LDAP. Документация (http://camel.apache.org/ldap.html) говорит, что для этого есть опция pageSize.Подкачка результатов в Apache Camel LDAP Компонент

PAGESIZE
«Когда указан модуль LDAP использует поисковый вызов для получения всех результатов (большинство серверов LDAP сгенерирует исключение при попытке получить более 1000 записей в одном запросе). Для того, чтобы иметь возможность использовать это LdapContext (подкласс DirContext) должен быть передан как ldapServerBean (в противном случае выбрасывается исключение) «

Что это значит? Как передать LdapContext в и итерации по страницам? Может ли кто-нибудь дать мне простой пример, когда многие записи извлекаются из LDAP?

ответ

0

За исключением указания параметра pageSize, вам, вероятно, ничего больше не нужно. В описании разъясняется незначительная проблема, с которой вы, вероятно, не столкнетесь.

Компонент ldap не ограничивается чтением из LdapContext, он может использовать экземпляр DirContext (суперинтерфейс). Использование экземпляра этого суперинтерфейса будет работать за исключением для установки pageSize. Если вы следуете примеру из документов Camel, вы увидите, что он использует com.sun.jndi.ldap.LdapCtxFactory в качестве фабрики для вашего контекстного компонента. Этот класс строит объекты, которые реализуют 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)")); 
Смежные вопросы