Şu anda bir şirkette bazı kütüphane tarama yazılımlarını sürdürüyorum ve (Lisedeyim) için bir koopedayım. Bir "CN" değeri döndürmek için tarayıcıdan LDAP aramasına bir çalışanID değeri geçirebilmem gerekir.LDAP Sorgusu Java'dan Yavaş Yanıt Özniteliğine Erişme (çalışan kimliği)
Ne yazık ki, Java programında döndürülen hiçbir sonuç almıyorum. Windows'da Active Directory programını kullanarak arama yapabildiğim, ancak çalışan kimliğinden herhangi bir sonuç görüntülemek için 6 ila 10 saniye sürüyor. Sorguda çok büyük bir zaman aşımı sınırı kullanarak bu sorunu çözmeye çalıştım, ama bence yanlış bir şey yapmalıyım.
Veritabanı deneyimine sahip olan herhangi bir fikir var mı?
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
Bu konuda oldukça yeni biriyim. Çalışan kimliğinin endekslendiğinden nasıl emin olabilirim? Komut satırında test mi yapıyorsun? – onines7