RFC 2696, LDAP Control Extension for Simple Paged Results Manipulation, defines a control for simple paging of search results that works with a cookie mechanism.
if (isSupported(SimplePagedResultsControl.OID)) {
ByteString cookie = ByteString.empty();
SearchRequest request;
final SearchResultHandler resultHandler = new MySearchResultHandler();
Result result;
int page = 1;
do {
System.out.println("# Simple paged results: Page " + page);
request =
Requests.newSearchRequest("dc=example,dc=com",
SearchScope.WHOLE_SUBTREE, "(sn=Jensen)", "cn")
.addControl(SimplePagedResultsControl.newControl(
true, 3, cookie));
result = connection.search(request, resultHandler);
try {
SimplePagedResultsControl control =
result.getControl(SimplePagedResultsControl.DECODER,
new DecodeOptions());
cookie = control.getCookie();
} catch (final DecodeException e) {
// Failed to decode the response control.
}
++page;
} while (cookie.length() != 0);
}
OpenDJ directory server supports getting simple paged results:
# Simple paged results: Page 1 dn: uid=ajensen,ou=People,dc=example,dc=com cn: Allison Jensen dn: uid=bjense2,ou=People,dc=example,dc=com cn: Bjorn Jensen dn: uid=bjensen,ou=People,dc=example,dc=com cn: Barbara Jensen cn: Babs Jensen # Simple paged results: Page 2 dn: uid=gjensen,ou=People,dc=example,dc=com cn: Gern Jensen dn: uid=jjensen,ou=People,dc=example,dc=com cn: Jody Jensen dn: uid=kjensen,ou=People,dc=example,dc=com cn: Kurt Jensen # Simple paged results: Page 3 dn: uid=rjense2,ou=People,dc=example,dc=com cn: Randy Jensen dn: uid=rjensen,ou=People,dc=example,dc=com cn: Richard Jensen dn: uid=tjensen,ou=People,dc=example,dc=com cn: Ted Jensen

