Après plusieurs recherche je ne trouve pas la solution à ce problème, tout se passe bien sauf que dès que je souhaite afficher tout les utilisateurs de l'AD, et bien un moment donné BIM : [LDAP: error code 4 - Sizelimit Exceeded]
Une solution ?
Merci d'avance
Voici mon code:
int pageSize = 30;
byte[] cookie = null;
ctx.setRequestControls(new Control[] { new PagedResultsControl(pageSize,
Control.NONCRITICAL) });
int total;
JSONArray dataArray = new JSONArray();
do {
/* perform the search */
String filter= "(&(objectClass=user))";
SearchControls searchCtrls = new SearchControls();
searchCtrls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(toDC(domain),filter,searchCtrls);
/* for each entry print out name + all attrs and values */
while (results != null && results.hasMore()) {
SearchResult result = (SearchResult) results.next();
String name = result.getName();
// CN=nicolas radoux,OU=Users,OU=Informatique,OU=CPASLAB
Pattern p = Pattern.compile("CN=([^,]+),OU=Users,OU=([^,]+).*OU=CPAS");
Matcher matcher = p.matcher(name);
if(matcher.find()) {
JSONObject object = new JSONObject();
String ou = matcher.group(2);
String sAMAccountName = (String) result.getAttributes().get("sAMAccountName").get(0);
String cn = (String) result.getAttributes().get("cn").get(0);
byte[] guid = result.getAttributes().get("objectGUID").get(0).toString().getBytes();
//String email = (String) result.getAttributes().get("mail").get(0);
String hex = new BigInteger(1,guid).toString(16);
object.put("sAMAccountName", sAMAccountName);
object.put("CN", cn);
object.put("OU", ou);
object.put("GUID", hex);
//object.put("email", email);
System.out.println(sAMAccountName + " : " + cn);
String query = "UPDATE cpas.personnel SET guid = ? \n" +
"WHERE concat(nom,' ',prenom) like concat('%',?,'%')";
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, hex);
ps.setString(2, cn);
ps.executeUpdate();
ps.close();
dataArray.put(object);
}
}
// Examine the paged results control response
Control[] controls = ctx.getResponseControls();
if (controls != null) {
for (int i = 0; i < controls.length; i++) {
if (controls[i] instanceof PagedResultsResponseControl) {
PagedResultsResponseControl prrc = (PagedResultsResponseControl) controls[i];
total = prrc.getResultSize();
if (total != 0) {
System.out.println("***************** END-OF-PAGE "
+ "(total : " + total + ") *****************\n");
} else {
System.out.println("***************** END-OF-PAGE "
+ "(total: unknown) ***************\n");
}
cookie = prrc.getCookie();
}
}
} else {
System.out.println("No controls were sent from the server");
}
// Re-activate paged results
ctx.setRequestControls(new Control[] { new PagedResultsControl(
pageSize, cookie, Control.CRITICAL) });
} while (cookie != null);
ctx.close();
- Edité par unchained77 22 mai 2019 à 15:54:55
[LDAP: error code 4 - Sizelimit Exceeded]
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.