Spec-Zone .ru
спецификации, руководства, описания, API
След: Именование Java и Интерфейс Каталога
Урок: Усовершенствованные Темы для Пользователей LDAP
Раздел: Больше Операций LDAP
Результаты поиска
Домашняя страница > Именование Java и Интерфейс Каталога > Усовершенствованные Темы для Пользователей LDAP

Результаты поиска

Когда Вы используете методы поиска в интерфейсе DirContext, Вы возвращаете NamingEnumeration. Каждым элементом в NamingEnumeration является SearchResult, который содержит следующую информацию:

Имя

Каждый SearchResult содержит имя записи LDAP, которая удовлетворила фильтр поиска. Вы получаете имя записи при использовании getName(). Этот метод возвращает composite name записи LDAP относительно целевого контекста. Целевой контекст является контекстом, к которому решает параметр name. В языке LDAP целевой контекст является базовым объектом для поиска. Вот пример.

NamingEnumeration answer = ctx.search("ou=NewHires", 
    "(&(mySpecialKey={0}) (cn=*{1}))",  // Filter expression
    new Object[]{key, name},                // Filter arguments
    null);                                  // Default search controls

Целевой контекст в этом примере - названное "ou=NewHires". Имена в SearchResult s в answer относительно "ou=NewHires". Например, если getName() возвратит "cn=J. Duke", то его именем относительно ctx будет "cn=J. Duke, ou=NewHires".

Если Вы выполняли поиск при использовании SearchControls.SUBTREE_SCOPE или SearchControls.OBJECT_SCOPE и самого целевого контекста, удовлетворенного фильтр поиска, то возвращенное имя будет, "" (пустое название), потому что это - имя относительно целевого контекста.

Это не целая история. Если поиск включит отсылки (см. Учебное руководство JNDI), или разыменовывающие псевдонимы (см. Учебное руководство JNDI), то у соответствующего SearchResult s будут имена, которые не являются относительно целевого контекста. Вместо этого они будут URL, которые обращаются непосредственно к записи. Чтобы определить, является ли имя, возвращенное getName(), относительным или абсолютным, используйте isRelative(). Если этот метод возвращает true, то имя относительно целевого контекста; если это возвращает false, именем является URL.

Если именем является URL, и Вы должны использовать тот URL, то можно передать это к начальному контексту, который понимает URL (см. Учебное руководство JNDI).

Если Вы должны получить полный DN записи, можно использовать NameClassPair.getNameInNamespace().

Объект

Если поиск проводился, запрашивая, чтобы объект записи был возвращен (SearchControls.setReturningObjFlag() был вызван с true), то SearchResult будет содержать объект, который представляет запись. Чтобы получить этот объект, Вы вызываете getObject(). Если java.io.Serializable, Referenceable, или объект Reference были ранее связаны с этим имя LDAP, то атрибуты от записи используются, чтобы восстановить тот объект (см. пример в Учебном руководстве JNDI). Иначе, атрибуты от записи используются, чтобы создать экземпляр DirContext, который представляет запись LDAP. В любом случае провайдер LDAP вызывает DirectoryManager.getObjectInstance() на объект и возвращает результаты.

Имя класса

Если поиск проводился, запрашивая, чтобы объект записи был возвращен, то имя class получается из возвращенного объекта. Если поиск требуемые атрибуты, которые включали извлечение атрибута "javaClassName" записи LDAP, то имя class является значением того атрибута. Иначе, именем class является "javax.naming.directory.DirContext". Имя class получается из getClassName().

Атрибуты

То, когда Вы выполняете поиск, можно выбрать возврат, приписывает или предоставляя параметр к одному из методов search() или устанавливая средства управления поиском, используя SearchControls.setReturningAttributes(). Если никакие атрибуты не были определены явно, то все атрибуты записи LDAP возвращаются. Определить, что никакие атрибуты быть возвращенными, следует передать пустой массив (new String[0]).

Чтобы получить атрибуты записи LDAP, Вы вызываете getAttributes() на SearchResult.

Средства управления ответом

См. урок Средств управления и Расширений Учебного руководства JNDI для деталей о том, как получить средства управления ответом результата поиска.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: LDAP Сравниваются
Следующая страница: LDAP Незапрашиваемые Уведомления