LDAP - PagedResultsControl

Bom dia Negada…

Minha ultima esperança são vocês :wink:

Então o que acontece é que estou tentando recuperar do Active Directory via LDAP algumas informaçãoes que sempre passam o limite permitido de retornos do AD, o que gera uma excessão…

partialresultexception unprocessed continuation references remaining name “my searchBase”.

Então gostaria de saber se vocês podem me ajudar… estou penando nisto faz algum tempo já, e desde já agradeço.

Meu Code



		
		try {

			LdapContext ctx = LDAPOperations.getContext(host, port, ssl, user, password);

			// Activate paged results
			int pageSize = 500;
			byte[] cookie = null;
			ctx.setRequestControls(new Control[] { new PagedResultsControl(pageSize, Control.NONCRITICAL) });
			int total;

			do {
				
				/* perform the search */
				NamingEnumeration<SearchResult> results = ctx.search("searchbase", memberof="groupName", new SearchControls());

				/* for each entry print out name + all attrs and values */
				while (results != null && results.hasMore()) {
					SearchResult entry = results.next();
					System.out.println(entry.getName());
				}

				// 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();
							System.out.println("***************** COOKIE " + "(total: COOKIE) ***************\n" + cookie);
						}
					}
				} 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();

		} catch (NamingException e) {
		      System.err.println("PagedSearch failed.1");
		      e.printStackTrace();
		    } catch (IOException ie) {
		      System.err.println("PagedSearch failed.2");
		      ie.printStackTrace();
		    }