javax.naming.ldap

接口
异常
java.lang.Object
  继承者 javax.naming.ldap.BasicControl
      继承者 javax.naming.ldap.PagedResultsControl
所有已实现的接口:
Serializable, Control

public final class PagedResultsControl
     
extends BasicControl

请求由 LDAP 服务器以指定的大小批量返回搜索操作的结果。请求方根据搜索操作调用率控制批量返回率。

以下代码示例展示了使用该类的方式:


     // Open an LDAP association
     LdapContext ctx = new InitialLdapContext();

     // 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 {
         // Perform the search
         NamingEnumeration results =
             ctx.search("", "(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);

     // Close the LDAP association
     ctx.close();
     ...

 

此类实现在 RFC 2696 中定义的分页结果的 LDAPv3 控件。 控件值具有以下 ASN.1 定义:


     realSearchControlValue ::= SEQUENCE {
         size      INTEGER (0..maxInt),
                           -- requested page size from client
                           -- result set size estimate from server
         cookie    OCTET STRING
     }

 

从以下版本开始:
1.5
另请参见:
PagedResultsResponseControl, 序列化表格

字段摘要
static String OID
          分页结果控件的分配对象标识符为 1.2.840.113556.1.4.319。
 
从类 javax.naming.ldap.BasicControl 继承的字段
criticality, id, value
 
从接口 javax.naming.ldap.Control 继承的字段
CRITICAL, NONCRITICAL
 
构造方法摘要
PagedResultsControl(int pageSize, boolean criticality)
          构造一个控件来设置要在每页结果中返回的项数。
PagedResultsControl(int pageSize, byte[] cookie, boolean criticality)
          构造一个控件来设置要在每页结果中返回的项数。
 
方法摘要
 
从类 javax.naming.ldap.BasicControl 继承的方法
getEncodedValue, getID, isCritical
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

OID

public static final String OID
分页结果控件的分配对象标识符为 1.2.840.113556.1.4.319。

另请参见:
常量字段值
构造方法详细信息

PagedResultsControl

public PagedResultsControl(int pageSize,
                           boolean criticality)
                    throws IOException
构造一个控件来设置要在每页结果中返回的项数。

参数:
pageSize - 要在一个页面中返回的项数。
criticality - 如果为 true,则服务器必须遵从控件,按照 pageSize 的指示返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
抛出:
IOException - 如果在将提供的参数编码到控件中时遇到错误。

PagedResultsControl

public PagedResultsControl(int pageSize,
                           byte[] cookie,
                           boolean criticality)
                    throws IOException
构造一个控件来设置要在每页结果中返回的项数。cookie 是由服务器提供的,可以从分页结果响应控件获取。

通过将 pageSize 设置为零并将 cookie 设置为从服务器收到的最后一个 cookie,可以放弃分页结果序列。

参数:
pageSize - 要在一个页面中返回的项数。
cookie - 服务器生成的 cookie(可能为 null)。
criticality - 如果为 true,则服务器必须遵从控件,按照 pageSize 的指示返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
抛出:
IOException - 如果在将提供的参数编码到控件中时遇到错误。