2017-03-02 1 views
1

eDirectory으로 이메일을 검색하여 카운트 수를 얻고 싶습니다. Java eDirectory는 이메일을 사용하여 사용자 수를 얻습니다.

이를 위해 나는 코드

import javax.naming.directory.DirContext; 
import javax.naming.directory.SearchResult; 
import java.util.Properties; 
import javax.naming.directory.InitialDirContext; 
import javax.naming.directory.SearchControls; 
import javax.naming.NamingEnumeration; 

public class WebService { 
    // Get number of count for email address 
    DirContext ldapConn = openLDAPConn(); 
    SearchResult result = findByEmail(ldapConn, fillObj.getEmail()); 

    public DirContext openLDAPConn() { 
     DirContext context = null; 
     try { 
      propFile = LoadProp.getProperties(); 

      Properties properties = new Properties(); 
      properties.put(Context.INITIAL_CONTEXT_FACTORY, propFile.getProperty(Constants.INITIAL_CONTEXT_FACTORY)); 
      properties.put(Context.PROVIDER_URL, propFile.getProperty(Constants.PROVIDER_URL)); 
      properties.put(Context.SECURITY_PROTOCOL, propFile.getProperty(Constants.SECURITY_PROTOCOL)); 
      properties.put(Context.SECURITY_PRINCIPAL, propFile.getProperty(Constants.SECURITY_PRINCIPAL)); 
      properties.put(Context.SECURITY_CREDENTIALS, propFile.getProperty(Constants.SECURITY_CREDENTIALS)); 

      context = new InitialDirContext(properties); 
      debugOutput("Open LDAP Connection", propFile); 
     } catch (Exception e) { 
      debugOutput("Inside openLDAPConn Exception :" + e, propFile); 
     } 
     return context; 
    } 

    public SearchResult findByEmail(DirContext ctx, String email) { 
     String ldapSearchBase = "ou=users,o=data"; 
     String searchFilter = "(&(objectClass=user)(mail=" + email + "))"; 
     SearchResult searchResult = null; 
     try { 
      SearchControls searchControls = new SearchControls(); 
      searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); 
      NamingEnumeration<SearchResult> results = ctx.search(ldapSearchBase, searchFilter, searchControls); 
      if (results.hasMoreElements()) { 
       searchResult = (SearchResult) results.nextElement(); 
      } 
     } catch (Exception e) { 
     } 

     return searchResult; 
    } 
} 

이하로 사용하고 있습니다 그러나 문제는 내가이 프로그램을 실행할 때, SearchResult 나에게 사용자의 카운트 수를 하나의 사용자 데이터를하지 준다이다.

제발 도와주세요.

Java 및 eDirectory를 사용하고 있습니다.

+0

귀하의 노력의 목적이 명확하지 않습니다. 제공된 전자 메일 주소로 사용자 수를 찾으려고합니까? – jwilleke

답변

1

나는 e 디렉토리와 함께 일을하고 난 당신에게 수, 합계, 평균 등의 디렉터리 개체의 집합을 제공 할 수있는 기능 건너하지 않은 나의 경험에서 나는 당신을 말할 수

당신 것 자바를 사용하여 검색 결과에 반환 된 객체 수를 계산해야합니다. 당신의 예에서 예를 들어

,

int count = 0; 
while (results.hasMoreElements()) { 
    count ++; 
    searchResult = (SearchResult) results.nextElement(); 
} 

System.out.println("Total number of search results = " + count); 

, 그 이메일 주소로 사용자가 한 명만 같아요. 따라서 내 코드 당 count은 1을 반환합니다. 예를 들어 와일드 카드와 같은 다른 기준을 사용하여 검색하면 결과가 다를 수 있습니다.


희망이 있습니다.

+0

내 코드에서'String ldapSearchBase = "ou = users, o = data"; '하드 코딩 된 값을 사용하고 싶지 않기 때문에'SearchControls.SUBTREE_SCOPE'와 같이 바꿀 수 있습니까? – user3441151

관련 문제