2016-03-21 19 views
2

私は現在、会社でいくつかのライブラリスキャンソフトウェアを管理しています。私は(私は高校にいる)仲間にいます。私は "CN"の値を返すためにスキャナからのemployeeID値をLDAPルックアップに渡すことができる必要があります。LDAPクエリ遅い応答属性へのJavaからのアクセス(employeeID)

残念ながら、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 

答えて

0

employeeID属性がインデックスに登録されていることを確認する必要があります。

フィルタをさらに修飾する必要があります。少なくともobjectClassフィルタを追加し、人物に使用しているオブジェクトクラスに設定します。

+0

私はこれをかなり初心者です。従業員IDがインデックスに登録されていることを確認するにはどうすればよいですか?コマンドラインでテストしますか? – onines7

関連する問題