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