簡體   English   中英

LDAP查詢從Java(employeeID)訪問慢響應屬性

[英]LDAP Query Accessing a Slow Response Attribute from Java (employeeID)

我目前正在一家公司維護一些圖書館掃描軟件,並且正在為(我在讀高中)工作。 我必須能夠將員工ID值從掃描儀傳遞到LDAP查找,以返回“ CN”值。

不幸的是,我在Java程序中沒有得到任何結果。 我可以使用Windows中的Active Directory程序進行搜索,但是要顯示employeeID的任何結果需要6到10秒鍾。 我試圖通過對查詢使用非常大的超時限制來解決此問題,但我認為我必須做錯了什么。

有數據庫經驗的人有什么想法嗎?

try
    {
      System.out.println("Début du test Active Directory");

      Hashtable<String, String> env = new Hashtable<String, String>(11);
      env.put(INSERT CREDENTIALS HERE);
      env.put("com.sun.jndi.ldap.timeout", "80000");
      env.put(Context.SECURITY_PROTOCOL, "ssl");
      env.put(Context.SECURITY_PROTOCOL, "simple");
      ldapContext = new InitialDirContext(env);

      // Create the search controls         
      SearchControls searchCtls = new SearchControls();

      //Specify the attributes to return
      String returnedAtts[]={"cn","givenName", "samAccountName"};
      searchCtls.setReturningAttributes(returnedAtts);

      //Specify the search scope
      searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

      //specify the LDAP search filter
      id = "********";
      String searchFilter = "(&(employeeID="+id+"))";

      //Specify the Base for the search
      String searchBase = "dc=ericsson,dc=se";
      //initialize counter to total the results
      SearchResult sr = null;
      int totalResults = 0;
      NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);
      // Search for objects using the filter
      while (totalResults == 0){
          answer = ldapContext.search(searchBase, searchFilter, searchCtls);
          System.out.println("Total results: " + totalResults);

          while (answer.hasMoreElements())
          {
            sr = answer.next();
            System.out.println(sr);
            totalResults++;
            System.out.println(">>>" + sr.getName());
            Attributes attrs = sr.getAttributes();
            cn = (">>>>>>>>>" + attrs.get("cn"));
            signum = cn.substring(13,20);
            System.out.println("Total results: " + totalResults);
          }
      }
      //Loop through the search results

您需要確保對employeeID屬性建立索引。

您還應該進一步限定過濾器。 我將至少添加一個objectClass過濾器,設置為您用於人員的任何對象類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM