Spec-Zone .ru
спецификации, руководства, описания, API
|
Вместо того, чтобы получить единственный объект за один раз, как с Context.lookup(), можно перечислить весь контекст при использовании единственной работы. Есть два метода для того, чтобы перечислить контекст: тот, который возвращает привязку и тот, который возвращает только имя к объекту пары имени class.
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() возвращает перечисление
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 может быть завершен одним из трех способов: естественно, явно, или неожиданно.
Независимо от того, как было завершено перечисление, когда-то завершился, оно больше не может использоваться. Вызов метода на завершенном перечислении приводит к неопределенному результату.
list() предназначается для приложений стиля браузера, которые только хотят вывести на экран имена объектов в контексте. Например, браузер мог бы перечислить имена в контексте и ожидать пользователя, чтобы выбрать один или несколько из имен, выведенных на экран, чтобы выполнить дальнейшие операции. Такие приложения обычно не нуждаются в доступе ко всем объектам в контексте.
listBindings() предназначается для приложений, которые должны выполнить операции на объектах в контексте в массе. Например, приложение резервного копирования, возможно, должно было бы выполнить "файл stats" операции на всех объектах в каталоге файла. Или программа администрирования принтера могла бы хотеть перезапустить все принтеры в здании. Чтобы выполнить такие операции, эти приложения должны получить все объекты, связанные в контексте. Таким образом это более целесообразно, чтобы возвратить объекты как часть перечисления.
Приложение может использовать или list() или потенциально более дорогой listBindings(), в зависимости от типа информации, в которой это нуждается.