| Author |
How to get this specific list from an LDAP Server?
|
Andrew Carney
Ranch Hand
Joined: Oct 17, 2006
Posts: 96
|
|
Hello, We are connected to an LDAP Server with this structure: Under OU=OUs as the root tree we have all our units, each unit is represented by a folder. Inside each unit are the departments, each unit can have 1 or more departments. Again, each department is represented by a folder. Inside each department are the actual users. Let's assume that the unit and department names are represented at the description property. I would like to get a list of of all the units names, meaning I would like to get a list of the properties of the folders sitting only at the first level below OUs. I am familiar with the javax.naming package API and code yet I was unable to achieve this. If I use SearchControls.SUBTREE_SCOPE it goes over the entire directory, including nested folders and users and get me the description of each one of them: This is not good since we have 5000 users and I need to get the unique units by code (For example using a SET collection) and the performance hit is very large since all I need are the folders at the first level only, which sums up to no more than 50 names. If I use SearchControls.ONELEVEL_SCOPE or SearchControls.OBJECT_SCOPE I receive an empty list back. Perhaps I am using ONELEVEL_SCOPE and OBJECT_SCOPE wrong or perhaps there is a different method to achieve what I need. Can someone please show me a code example to get the exact folders I need (lists of the units)? Thank you in advance, Roy
|
 |
Christopher McCauley
Greenhorn
Joined: Jan 03, 2005
Posts: 27
|
|
Roy, I saw this post and wondered if you had any luck? I also have a problem accessing properties but further on down the tree. It seems I can not retrieve and Numerics (MS - Integer8, I think)... specifically the pwdLastSet value...have you ever had success accessing a similar value? Here is our code, not sure if it helps your case [CODE] InitialDirContext ctx = new InitialDirContext(props); SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); String[] attrIDs = {"cn", "distinguishedName", "description"}; String filt = "cn="+userid; constraints.setReturningAttributes(attrIDs); NamingEnumeration results = ctx.search("ou=Foo,DC=foo,DC=foo,DC=foo,DC=foo", filt, constraints); if (results != null && results.hasMore()){ status = 1; SearchResult si = (SearchResult)results.next(); Attributes attrs = si.getAttributes(); if (attrs != null) { for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements() { Attribute attr = (Attribute)ae.next(); String attrId = attr.getID(); if (attrId.equals("distinguishedName")){ { for (Enumeration vals = attr.getAll(); vals.hasMoreElements() { str = str + vals.nextElement(); etc., etc.
|
JCM<br />good at cookin'
|
 |
 |
|
|
subject: How to get this specific list from an LDAP Server?
|
|
|