Java 迭代LDAP搜索结果

Java 迭代LDAP搜索结果,java,active-directory,ldap,jndi,Java,Active Directory,Ldap,Jndi,我对JavaLDAP api不太熟悉。我在这里试图实现的是查询OU下的所有组,以及每个组下的用户列表 差不多 Group_1 g1_member_1 g1_member_2 g1_member_3 Group_2 g2_member_1 g2_member_2 等等 我正在使用下面的代码片段。不确定我应该如何迭代搜索结果 String[] attrs = {"dn","cn","member"}; SearchControls controls = new SearchContro

我对JavaLDAP api不太熟悉。我在这里试图实现的是查询OU下的所有组,以及每个组下的用户列表

差不多

Group_1
g1_member_1 
g1_member_2 
g1_member_3
Group_2 
g2_member_1 
g2_member_2
等等

我正在使用下面的代码片段。不确定我应该如何迭代搜索结果

 String[] attrs = {"dn","cn","member"};
 SearchControls controls = new SearchControls();
 controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 controls.setReturningAttributes(attrs);
 NamingEnumeration<SearchResult> results = lContext.search(ou, "cn=*", controls);
 while (results.hasMore()){
  SearchResult result = results.next();
  System.out.println(result.getNameInNamespace());
 }
String[]attrs={“dn”、“cn”、“member”};
SearchControls=新的SearchControls();
控件.setSearchScope(SearchControls.SUBTREE_范围);
控件。设置返回属性(属性);
NamingEnumeration results=lContext.search(ou,“cn=*”,控件);
while(results.hasMore()){
SearchResult=results.next();
System.out.println(result.getNameInNamespace());
}
当前,当我打印
结果.getNameInNamespace()
时,我得到了dn。我对cn和每个cn的成员都感兴趣


我应该在这里进行迭代搜索吗?对于返回的每个组,我是否再次启动新的用户搜索?难道没有一种方法可以在一个查询中获得所有信息吗

能够通过以下更改使其正常工作

 String[] attrs = {"dn","cn","member"};
 SearchControls controls = new SearchControls();
 controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 controls.setReturningAttributes(attrs);
 NamingEnumeration<SearchResult> results = lContext.search(ou, "(&(objectClass=group))", controls);
 while (results.hasMore()){
  SearchResult result = results.next();
  System.out.println(result.getNameInNamespace());
  Attributes attributes = result.getAttributes();
  System.out.println("DN "+result.getNameInNamespace());
  System.out.println("CN "+attributes.get("cn"));
  System.out.println("MEMBER "+attributes.get("member"));
  System.out.println("**********************");
 }
String[]attrs={“dn”、“cn”、“member”};
SearchControls=新的SearchControls();
控件.setSearchScope(SearchControls.SUBTREE_范围);
控件。设置返回属性(属性);
NamingEnumeration results=lContext.search(ou,(&(objectClass=group)),控件);
while(results.hasMore()){
SearchResult=results.next();
System.out.println(result.getNameInNamespace());
Attributes=result.getAttributes();
System.out.println(“DN”+result.getNameInNamespace());
System.out.println(“CN”+attributes.get(“CN”);
System.out.println(“成员”+属性.get(“成员”);
System.out.println(“*************************”);
}
迭代成员属性以单独处理每个用户