模块 java.naming

类 PagedResultsControl

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
参见:
  • 字段详细信息

    • OID

      public static final String  OID
      分页结果控件的分配对象标识符是 1.2.840.113556.1.4.319。
      参见:
  • 构造方法详细信息

    • PagedResultsControl

      public PagedResultsControl(int pageSize, boolean criticality) throws IOException
      构造一个控件以设置每页结果返回的条目数。
      参数:
      pageSize - 页面中返回的条目数。
      criticality - 如果为真,则服务必须遵守该控件并返回由 pageSize 指示的搜索结果,否则拒绝执行搜索。如果为 false,则服务无需遵守该控制。
      抛出:
      IOException - 如果在将提供的参数编码到控件中时遇到错误。
    • PagedResultsControl

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

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

      参数:
      pageSize - 页面中返回的条目数。
      cookie - 一个可能为空的服务生成的 cookie。
      criticality - 如果为真,则服务必须遵守该控件并返回由 pageSize 指示的搜索结果,否则拒绝执行搜索。如果为 false,则服务无需遵守该控制。
      抛出:
      IOException - 如果在将提供的参数编码到控件中时遇到错误。