Spec-Zone .ru
спецификации, руководства, описания, API
|
Самая простая форма поиска требует, чтобы Вы определили набор атрибутов, которые запись должна иметь и имя целевого контекста, в котором можно выполнить поиск.
Следующий код создает набор атрибута matchAttrs, у которого есть два атрибута "sn" и "mail". Это определяет, что у записей квалификации должна быть фамилия ("sn") атрибут со значением "Geisel" и атрибут "mail" с любым значением. Это тогда вызывает DirContext.search(), чтобы искать контекст "ou=People" записи, которым определил атрибуты matchAttrs.
// Specify the attributes to match // Ask for objects that has a surname ("sn") attribute with // the value "Geisel" and the "mail" attribute // ignore attribute name case Attributes matchAttrs = new BasicAttributes(true); matchAttrs.put(new BasicAttribute("sn", "Geisel")); matchAttrs.put(new BasicAttribute("mail")); // Search for objects that have those matching attributes NamingEnumeration answer = ctx.search("ou=People", matchAttrs);
Можно тогда напечатать результаты следующим образом.
while (answer.hasMore()) { SearchResult sr = (SearchResult)answer.next(); System.out.println(">>>" + sr.getName()); printAttrs(sr.getAttributes()); }
printAttrs() подобен коду в примере
Выполнение this example
приводит к следующему результату.
# java SearchRetAll >>>cn=Ted Geisel attribute: sn value: Geisel attribute: objectclass value: top value: person value: organizationalPerson value: inetOrgPerson attribute: jpegphoto value: [B@1dacd78b attribute: mail value: Ted.Geisel@JNDITutorial.example.com attribute: facsimiletelephonenumber value: +1 408 555 2329 attribute: cn value: Ted Geisel attribute: telephonenumber value: +1 408 555 5252
Предыдущий пример, возвращенный все атрибуты, связанные с записями, которые удовлетворяют указанный запрос. Можно выбрать атрибуты, чтобы возвратиться, передавая search() массив идентификаторов атрибута, которые Вы хотите включать в результат. После создания matchAttrs как показано ранее, Вы также должны создать массив идентификаторов атрибута, как показано затем.
// Specify the ids of the attributes to return String[] attrIDs = {"sn", "telephonenumber", "golfhandicap", "mail"}; // Search for objects that have those matching attributes NamingEnumeration answer = ctx.search("ou=People", matchAttrs, attrIDs);
This example
возвращает атрибуты "sn", "telephonenumber", "golfhandicap", и "mail" записей, которые имеют атрибут "mail" и имеют атрибут "sn" со значением "Geisel". Этот пример приводит к следующему результату. (У записи нет атрибута "golfhandicap", таким образом, она не возвращается.)
# java Search >>>cn=Ted Geisel attribute: sn value: Geisel attribute: mail value: Ted.Geisel@JNDITutorial.example.com attribute: telephonenumber value: +1 408 555 5252