WEB开发网
开发学院软件开发Java 在 Apache 目录服务器中存储 Java 对象,第 2 部分... 阅读

在 Apache 目录服务器中存储 Java 对象,第 2 部分:在 ApacheDS 中存储、搜索和检索 Java 对象(下)

 2010-04-19 00:00:00 来源:WEB开发网   
核心提示: 步骤 6. 提取搜索结果:清单 6 的步骤 6 中的 NamingEnumeration 对象包含搜索结果集合,集合中的每个搜索结果都由一个 SearchResult 对象表示,在 Apache 目录服务器中存储 Java 对象,第 2 部分:在 ApacheDS 中存储、搜索和检索 Java

步骤 6. 提取搜索结果:清单 6 的步骤 6 中的 NamingEnumeration 对象包含搜索结果集合。集合中的每个搜索结果都由一个 SearchResult 对象表示。要提取单个的搜索结果,只需在 NamingEnumeration 对象上进行迭代即可。

步骤 7. 处理单个搜索结果:注意,每个搜索结果都包含关于单一数据条目的信息。可以从 SearchResult 对象得到数据条目的两部分信息(即 RDN 和它的所有属性)。

步骤 8. 调用 getName():SearchResult 对象的 getName() 方法返回所搜索条目的 RDN。Alice 的 RDN 是 uid=alice。

步骤 9. 调用 getAttributes():SearchResult 对象的 getAttributes() 方法返回 Attributes 对象,它包含与所搜索条目相关的所有属性值。Attributes 对象表示的属性集合与 清单 6 的步骤 4 中创建的属性集合类似。

步骤 10. 调用 getAll():Attributes 对象的 getAll() 方法返回一个枚举,其中包含集合中的所有属性。

步骤 11. 处理属性:最后,从集合中取出一个属性,并调用其 getID() 和 getAll() 方法。getID() 方法以字符串形式返回属性的名称。getAll() 方法以枚举的形式返回所有属性值。

应用程序 5. 按名称搜索

在前面的搜索示例中,我们已查看了如何在知道用户 uid 时搜索用户。在这个示例中,将学习如何修改应用程序,用 Alice 的用户名而不是 uid 来搜索她。

回忆一下 第 1 部分的图 18,在该图中,用户名存储为用户数据条目的 cn 属性的值。所以,在这个应用程序中,您将搜索 cn 属性,如清单 7 所示:

清单 7. SearchForAliceByCN

public class SearchForAliceByCN { 
  public SearchForAliceByCN() { 
    try 
    { 
      //------------------------------------------     
      //Step1: Setting up JNDI properties for ApacheDS 
      //------------------------------------------       
      InputStream inputStream = new FileInputStream( "ApacheDS.properties"); 
      Properties properties = new Properties(); 
      properties.load(inputStream); 
      properties.setProperty("java.naming.security.credentials", "secret"); 
 
      //------------------------------------------     
      // Step2: Fetching a DirContext object 
      //------------------------------------------       
      DirContext ctx = new InitialDirContext(properties); 
   
      //--------------------------------------------- 
      //Step3: Setting search context 
      //--------------------------------------------- 
      String searchContext = "ou=users"; 
 
      //-------------------------------------------- 
      //Step4: Creating search attributes for Alice 
      //-------------------------------------------- 
      Attribute cn = new BasicAttribute("cn"); 
      Attribute objclass = new BasicAttribute("objectClass"); 
 
      //putting attribute values 
      cn.add("Alice"); 
      objclass.add("person"); 
 
      //Instantiate an Attributes object and put search attributes in it 
      Attributes attrs = new BasicAttributes(true); 
      attrs.put(cn); 
      attrs.put(objclass); 
 
      //------------------------------------------ 
      //Step5: Executing search 
      //------------------------------------------ 
      NamingEnumeration ne = ctx.search(searchContext, attrs); 
       
      if (ne != null) 
      { 
        //Step 6: Iterating through SearchResults 
        while (ne.hasMore()) { 
          //Step 7: Getting individual SearchResult object 
          SearchResult sr = (SearchResult) ne.next(); 
 
          //Step 8: 
          String entryRDN = sr.getName(); 
 
          //Step 9: 
          Attributes srAttrs = sr.getAttributes(); 
 
          if (srAttrs != null) { 
             //Step 10: 
             for (Enumeration e = attrs.getAll() ; e.hasMoreElements() ;) 
             { 
               Attribute attr = (Attribute) e.nextElement(); 
 
               //Step 11: 
               String attrID = attr.getID();  
               System.out.println("Attribute Name: "+attrID); 
               System.out.println("Attribute Value(s):"); 
 
               NamingEnumeration e1 = attr.getAll(); 
                while (e1.hasMore()) 
                  System.out.println("\t\t"+e1.nextElement()); 
             }//for() 
          }//if (srAttrs) 
        } 
      }//if (ne != null) 
         
    } catch (Exception e) { 
      System.out.println("Operation failed: " + e); 
    } 
  } 
 
  public static void main(String[] args) { 
    SearchForAliceByCN searchAlice = new SearchForAliceByCN(); 
  } 
 }    

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Apache 目录 服务器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接