Проблема LDAP PagedResultsControl в Java - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить всех пользователей из активного каталога LDAP, и он не возвращает всех пользователей один раз, поскольку максимальный размер, возвращаемый сервером ldap, равен 1000.

Поэтому я использую PagedResultsControl, чтобы получить всех пользователей с сервера LDAP.как пагинация.

Пример кода, как показано ниже:

// Activate paged results
int pageSize = 20; // 20 entries per page
 byte[] cookie = null;
 int total;

 ctx.setRequestControls(new Control[]{new PagedResultsControl(pageSize, Control.CRITICAL) });
 do {

     System.out.println("Processing ...");

     // Perform the search
     NamingEnumeration results =
         ctx.search("DC=test,DC=local", "(objectclass=*)", new SearchControls());

     // Iterate over a batch of search results
     while (results != null && results.hasMore()) {
         // Display an entry
         SearchResult entry = (SearchResult)results.next();
         System.out.println(entry.getName());
         //System.out.println(entry.getAttributes());

         // Handle the entry's response controls (if any)
         if (entry instanceof HasControls) {
             // ((HasControls)entry).getControls();
         }
     }
     // 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();
                 cookie = prrc.getCookie();

             } else {
                 // Handle other response controls (if any)
             }
         }
     }

     // Re-activate paged results
     ctx.setRequestControls(new Control[]{
         new PagedResultsControl(pageSize, cookie, Control.CRITICAL) });
 } while (cookie != null);

Вышеупомянутый код не работает, и его цикл выполняется только один раз, но при поиске без этого PagedResultsControl получает больше записей.

Может кто-нибудь, пожалуйста, помогите в этом.

...