检索专有名称
在 5.0 之前的 JDK 版本中,没有直接的方法可以从搜索结果中获得专有名称(DN)。 SearchResults\.getName\(\)
方法始终返回相对于执行搜索的上下文的名称。为了获得搜索条 Object 绝对或全名,需要一定数量的记账来跟踪祖先上下文。每当对上下文执行搜索,列表或 listBindings 操作时,JDK 5.0 中都会添加以下两个新 API,以从 NameClassPair 中检索绝对名称:
这是一个从 LDAP 搜索中检索 DN 的示例:
public static void printSearchEnumeration(NamingEnumeration retEnum) {
try {
while (retEnum.hasMore()) {
SearchResult sr = (SearchResult) retEnum.next();
System.out.println(">>" + sr.getNameInNamespace());
}
} catch (NamingException e) {
e.printStackTrace();
}
}
完整的示例可以从here获得。该程序生成如下输出:
>>cn=Jon Ruiz, ou=People, o=JNDITutorial
>>cn=Scott Seligman, ou=People, o=JNDITutorial
>>cn=Samuel Clemens, ou=People, o=JNDITutorial
>>cn=Rosanna Lee, ou=People, o=JNDITutorial
>>cn=Maxine Erlund, ou=People, o=JNDITutorial
>>cn=Niels Bohr, ou=People, o=JNDITutorial
>>cn=Uri Geller, ou=People, o=JNDITutorial
>>cn=Colleen Sullivan, ou=People, o=JNDITutorial
>>cn=Vinnie Ryan, ou=People, o=JNDITutorial
>>cn=Rod Serling, ou=People, o=JNDITutorial
>>cn=Jonathan Wood, ou=People, o=JNDITutorial
>>cn=Aravindan Ranganathan, ou=People, o=JNDITutorial
>>cn=Ian Anderson, ou=People, o=JNDITutorial
>>cn=Lao Tzu, ou=People, o=JNDITutorial
>>cn=Don Knuth, ou=People, o=JNDITutorial
>>cn=Roger Waters, ou=People, o=JNDITutorial
>>cn=Ben Dubin, ou=People, o=JNDITutorial
>>cn=Spuds Mackenzie, ou=People, o=JNDITutorial
>>cn=John Fowler, ou=People, o=JNDITutorial
>>cn=Londo Mollari, ou=People, o=JNDITutorial
>>cn=Ted Geisel, ou=People,o=JNDITutorial