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

Перечислите Контекст

Вместо того, чтобы получить единственный объект за один раз, как с Context.lookup(), можно перечислить весь контекст при использовании единственной работы. Есть два метода для того, чтобы перечислить контекст: тот, который возвращает привязку и тот, который возвращает только имя к объекту пары имени class.

Контекст. Список () Метод

Context.list() возвращает перечисление NameClassPair. Каждый NameClassPair состоит из имени объекта и его имени class. Следующий фрагмент кода перечисляет содержание каталога "ou=People" (то есть, файлы и каталоги, найденные в каталоге "ou=People").

NamingEnumeration list = ctx.list("ou=People");

while (list.hasMore()) {
    NameClassPair nc = (NameClassPair)list.next();
    System.out.println(nc);
}

Выполнение this example приводит к следующему выводу.

# java List
cn=Jon Ruiz: javax.naming.directory.DirContext
cn=Scott Seligman: javax.naming.directory.DirContext
cn=Samuel Clemens: javax.naming.directory.DirContext
cn=Rosanna Lee: javax.naming.directory.DirContext
cn=Maxine Erlund: javax.naming.directory.DirContext
cn=Niels Bohr: javax.naming.directory.DirContext
cn=Uri Geller: javax.naming.directory.DirContext
cn=Colleen Sullivan: javax.naming.directory.DirContext
cn=Vinnie Ryan: javax.naming.directory.DirContext
cn=Rod Serling: javax.naming.directory.DirContext
cn=Jonathan Wood: javax.naming.directory.DirContext
cn=Aravindan Ranganathan: javax.naming.directory.DirContext
cn=Ian Anderson: javax.naming.directory.DirContext
cn=Lao Tzu: javax.naming.directory.DirContext
cn=Don Knuth: javax.naming.directory.DirContext
cn=Roger Waters: javax.naming.directory.DirContext
cn=Ben Dubin: javax.naming.directory.DirContext
cn=Spuds Mackenzie: javax.naming.directory.DirContext
cn=John Fowler: javax.naming.directory.DirContext
cn=Londo Mollari: javax.naming.directory.DirContext
cn=Ted Geisel: javax.naming.directory.DirContext

Context.listBindings () Метод

Context.listBindings() возвращает перечисление Binding. Binding является подклассом NameClassPair. Привязка содержит не только имя объекта и имя class, но также и объект. Следующий код перечисляет контекст "ou=People", распечатывая имя каждой привязки и объект.

NamingEnumeration bindings = ctx.listBindings("ou=People");

while (bindings.hasMore()) {
    Binding bd = (Binding)bindings.next();
    System.out.println(bd.getName() + ": " + bd.getObject());
}

Выполнение this example приводит к следующему выводу.

# java ListBindings
cn=Jon Ruiz: com.sun.jndi.ldap.LdapCtx@1d4c61c
cn=Scott Seligman: com.sun.jndi.ldap.LdapCtx@1a626f
cn=Samuel Clemens: com.sun.jndi.ldap.LdapCtx@34a1fc
cn=Rosanna Lee: com.sun.jndi.ldap.LdapCtx@176c74b
cn=Maxine Erlund: com.sun.jndi.ldap.LdapCtx@11b9fb1
cn=Niels Bohr: com.sun.jndi.ldap.LdapCtx@913fe2
cn=Uri Geller: com.sun.jndi.ldap.LdapCtx@12558d6
cn=Colleen Sullivan: com.sun.jndi.ldap.LdapCtx@eb7859
cn=Vinnie Ryan: com.sun.jndi.ldap.LdapCtx@12a54f9
cn=Rod Serling: com.sun.jndi.ldap.LdapCtx@30e280
cn=Jonathan Wood: com.sun.jndi.ldap.LdapCtx@16672d6
cn=Aravindan Ranganathan: com.sun.jndi.ldap.LdapCtx@fd54d6
cn=Ian Anderson: com.sun.jndi.ldap.LdapCtx@1415de6
cn=Lao Tzu: com.sun.jndi.ldap.LdapCtx@7bd9f2
cn=Don Knuth: com.sun.jndi.ldap.LdapCtx@121cc40
cn=Roger Waters: com.sun.jndi.ldap.LdapCtx@443226
cn=Ben Dubin: com.sun.jndi.ldap.LdapCtx@1386000
cn=Spuds Mackenzie: com.sun.jndi.ldap.LdapCtx@26d4f1
cn=John Fowler: com.sun.jndi.ldap.LdapCtx@1662dc8
cn=Londo Mollari: com.sun.jndi.ldap.LdapCtx@147c5fc
cn=Ted Geisel: com.sun.jndi.ldap.LdapCtx@3eca90

Завершение NamingEnumeration

NamingEnumeration может быть завершен одним из трех способов: естественно, явно, или неожиданно.

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

Почему Два Различных Метода Списка?

list() предназначается для приложений стиля браузера, которые только хотят вывести на экран имена объектов в контексте. Например, браузер мог бы перечислить имена в контексте и ожидать пользователя, чтобы выбрать один или несколько из имен, выведенных на экран, чтобы выполнить дальнейшие операции. Такие приложения обычно не нуждаются в доступе ко всем объектам в контексте.

listBindings() предназначается для приложений, которые должны выполнить операции на объектах в контексте в массе. Например, приложение резервного копирования, возможно, должно было бы выполнить "файл stats" операции на всех объектах в каталоге файла. Или программа администрирования принтера могла бы хотеть перезапустить все принтеры в здании. Чтобы выполнить такие операции, эти приложения должны получить все объекты, связанные в контексте. Таким образом это более целесообразно, чтобы возвратить объекты как часть перечисления.

Приложение может использовать или list() или потенциально более дорогой listBindings(), в зависимости от типа информации, в которой это нуждается.


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

Предыдущая страница: Поиск Объект
Следующая страница: Добавьте, Замена или Удалите Привязку