java.lang.Object
javax.naming.ldap.BasicControl
javax.naming.ldap.PagedResultsControl
- 所有已实现的接口:
-
Serializable
,Control
请求将搜索操作的结果以指定大小的批次由LDAP服务器返回。请求者通过调用搜索操作的速率来控制批次返回的速率。
以下代码示例显示了如何使用该类:
// 打开LDAP连接
LdapContext ctx = new InitialLdapContext();
// 激活分页结果
int pageSize = 20; // 每页20个条目
byte[] cookie = null;
int total;
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, Control.CRITICAL) });
do {
// 执行搜索
NamingEnumeration results =
ctx.search("", "(objectclass=*)", new SearchControls());
// 迭代搜索结果的批次
while (results != null && results.hasMore()) {
// 显示条目
SearchResult entry = (SearchResult)results.next();
System.out.println(entry.getName());
System.out.println(entry.getAttributes());
// 处理条目的响应控件(如果有)
if (entry instanceof HasControls) {
// ((HasControls)entry).getControls();
}
}
// 检查分页结果控件响应
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 {
// 处理其他响应控件(如果有)
}
}
}
// 重新激活分页结果
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, cookie, Control.CRITICAL) });
} while (cookie != null);
// 关闭LDAP连接
ctx.close();
...
该类实现了在RFC 2696中定义的LDAPv3分页结果控件。控件的值具有以下ASN.1定义:
realSearchControlValue ::= SEQUENCE {
size INTEGER (0..maxInt),
-- 客户端请求的每页大小
-- 服务器估计的结果集大小
cookie OCTET STRING
}
- 自 JDK 版本:
- 1.5
- 参见:
-
Field Summary
Fields declared in class javax.naming.ldap.BasicControl
criticality, id, value
Fields declared in interface javax.naming.ldap.Control
CRITICAL, NONCRITICAL
-
Constructor Summary
ConstructorDescriptionPagedResultsControl
(int pageSize, boolean criticality) 构造一个控件,以设置每页返回的条目数。PagedResultsControl
(int pageSize, byte[] cookie, boolean criticality) 构造一个控件,以设置每页返回的条目数。 -
Method Summary
Methods declared in class javax.naming.ldap.BasicControl
getEncodedValue, getID, isCritical
-
Field Details
-
OID
分页结果控件的分配对象标识符为1.2.840.113556.1.4.319。- 参见:
-
-
Constructor Details
-
PagedResultsControl
构造一个控件,以设置每页返回的条目数。- 参数:
-
pageSize
- 每页返回的条目数。 -
criticality
- 如果为true,则服务器必须遵守控件并根据pageSize返回搜索结果,或拒绝执行搜索。如果为false,则服务器不必遵守控件。 - 抛出:
-
IOException
- 如果在将提供的参数编码为控件时遇到错误。
-
PagedResultsControl
构造一个控件,以设置每页返回的条目数。服务器提供cookie,并可以从分页结果响应控件中获取。通过将pageSize设置为零并将cookie设置为从服务器接收的最后一个cookie,可以放弃一系列分页结果。
- 参数:
-
pageSize
- 每页返回的条目数。 -
cookie
- 可能为null的服务器生成的cookie。 -
criticality
- 如果为true,则服务器必须遵守控件并根据pageSize返回搜索结果,或拒绝执行搜索。如果为false,则服务器不必遵守控件。 - 抛出:
-
IOException
- 如果在将提供的参数编码为控件时遇到错误。
-