2010-01-15 4 views
1

Я пытаюсь получить данные о группах в LDAP. Поскольку мне нужно разбивать на страницы результаты, мне нужно запустить запросы диапазона. Моя настройка использует JNDI для подключения к LDAP. Я пытаюсь запустить этот запросКак выполнить запросы диапазона в LDAP

(&(objectclass=group)(range=1-500)) 

Что я делаю неправильно? Я знаю, что для LDAP существуют запросы на основе диапазона, как мне изменить этот запрос для получения того же?

ответ

4

Ну пейджинг - это одно, а диапазон - другой. Вы публикуете результаты, которые вы возвращаете с сервера LDAP при наличии более 1000 записей (по крайней мере, это значение по умолчанию в Active Directory).

MSDN имеет an article on how to do paged searches in .NET; надеюсь, вы можете перевести это в свою среду.

Диапазон: something different. Вы используете диапазон, если у вас есть атрибут multi-value (обычно member-атрибут для группы), который имеет большое количество значений. Таким образом, вы не можете иметь диапазон в запросе. Вам нужно указать диапазон при доступе к атрибуту multi-value (вместо того, чтобы просто указывать member в коде, обращающемся к значению свойства, который вы указываете member;range=1-500, чтобы получить первые 500 значений из этого многозначного атрибута).

+0

Я попытался с помощью этого подхода к управлению интервальными запросов, но не могут пройти мимо записи предельного барьера 1000. Есть предложения? –

+0

@RiteshMNayak, как я понял, вам нужно указать, что «attr + range» вещь при выполнении запроса к LDAP вместо реального атрибута. См. Ответ Рави Махи – Alexey

2

Вместо простого управления пейджинговой связью вы можете рассмотреть возможность использования контроля виртуального списка, если ваш AD - версия 2003 или выше. Виртуальный просмотр списка предоставляет расширенные параметры сортировки результатов и дает вам больше возможностей для управления подмножеством набора результатов поиска.

2

Это, как вам нужно запросить, чтобы получить результаты

int start = 0; 
int step = 1500; 
int finish = 1499; 
boolean finished = false; 
String range; 

String returnedAtts[] = {"member;Range=" + range}; 
searchCtls.setReturningAttributes(returnedAtts); 
NamingEnumeration answer = readableDirContext.search(searchDN, searchFilter, searchCtls); 

 Смежные вопросы

  • Нет связанных вопросов^_^