|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Когда Вы используете методы поиска в интерфейсе DirContext, Вы возвращаете . Каждым элементом в NamingEnumeration является , который содержит следующую информацию:
Каждый SearchResult содержит имя записи LDAP, которая удовлетворила фильтр поиска. Вы получаете имя записи при использовании . Этот метод возвращает записи 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".
Если Вы выполняли поиск при использовании или и самого целевого контекста, удовлетворенного фильтр поиска, то возвращенное имя будет, "" (пустое название), потому что это - имя относительно целевого контекста.
Это не целая история. Если поиск включит отсылки (см. ), или разыменовывающие псевдонимы (см. ), то у соответствующего SearchResult s будут имена, которые не являются относительно целевого контекста. Вместо этого они будут URL, которые обращаются непосредственно к записи. Чтобы определить, является ли имя, возвращенное getName(), относительным или абсолютным, используйте . Если этот метод возвращает true, то имя относительно целевого контекста; если это возвращает false, именем является URL.
Если именем является URL, и Вы должны использовать тот URL, то можно передать это к начальному контексту, который понимает URL (см. ).
Если Вы должны получить полный DN записи, можно использовать .
Если поиск проводился, запрашивая, чтобы объект записи был возвращен был вызван с true), то SearchResult будет содержать объект, который представляет запись. Чтобы получить этот объект, Вы вызываете . Если java.io.Serializable, , или объект были ранее связаны с этим имя LDAP, то атрибуты от записи используются, чтобы восстановить тот объект (см. пример в ). Иначе, атрибуты от записи используются, чтобы создать экземпляр DirContext, который представляет запись LDAP. В любом случае провайдер LDAP вызывает на объект и возвращает результаты.
Если поиск проводился, запрашивая, чтобы объект записи был возвращен, то имя class получается из возвращенного объекта. Если поиск требуемые атрибуты, которые включали извлечение атрибута "javaClassName" записи LDAP, то имя class является значением того атрибута. Иначе, именем class является "javax.naming.directory.DirContext". Имя class получается из .
То, когда Вы выполняете поиск, можно выбрать возврат, приписывает или предоставляя параметр к одному из методов или устанавливая средства управления поиском, используя . Если никакие атрибуты не были определены явно, то все атрибуты записи LDAP возвращаются. Определить, что никакие атрибуты быть возвращенными, следует передать пустой массив (new String[0]).
Чтобы получить атрибуты записи LDAP, Вы вызываете на SearchResult.
См. урок Учебного руководства JNDI для деталей о том, как получить средства управления ответом результата поиска.