java.lang.Object
javax.naming.ldap.BasicControl
javax.naming.ldap.SortControl
- 所有已实现的接口:
-
Serializable
,Control
请求在返回之前由LDAP服务器对搜索操作的结果进行排序。排序标准使用一个或多个排序键的有序列表指定,并附带排序参数。根据排序控件中提供的参数,在LDAP服务器上对搜索结果进行排序,然后将其返回给请求者。如果服务器不支持排序(并且排序控件标记为关键),则不执行搜索操作并返回错误。
以下代码示例显示了如何使用该类:
// 打开LDAP连接
LdapContext ctx = new InitialLdapContext();
// 激活排序
String sortKey = "cn";
ctx.setRequestControls(new Control[]{
new SortControl(sortKey, Control.CRITICAL) });
// 执行搜索
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 SortResponseControl) {
SortResponseControl src = (SortResponseControl)controls[i];
if (! src.isSorted()) {
throw src.getException();
}
} else {
// 处理其他响应控件(如果有)
}
}
}
// 关闭LDAP连接
ctx.close();
...
该类实现了LDAPv3服务器端排序的请求控件,如RFC 2891中定义。控件的值具有以下ASN.1定义:
SortKeyList ::= SEQUENCE OF SEQUENCE { attributeType AttributeDescription, orderingRule [0] MatchingRuleId OPTIONAL, reverseOrder [1] BOOLEAN DEFAULT FALSE }
- 自 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
ConstructorDescriptionSortControl
(String[] sortBy, boolean criticality) 构造一个控件,按升序对属性列表进行排序。SortControl
(String sortBy, boolean criticality) 构造一个控件,按升序对单个属性进行排序。SortControl
(SortKey[] sortBy, boolean criticality) 构造一个控件,按照排序键列表进行排序。 -
Method Summary
Methods declared in class javax.naming.ldap.BasicControl
getEncodedValue, getID, isCritical
-
Field Details
-
OID
服务器端排序控件的分配对象标识符为1.2.840.113556.1.4.473。- 参见:
-
-
Constructor Details
-
SortControl
构造一个控件,按升序对单个属性进行排序。将使用为指定属性定义的排序匹配规则执行排序。- 参数:
-
sortBy
- 要排序的属性 ID。 -
criticality
- 如果为 true,则服务器必须遵守控件并按请求排序返回搜索结果,否则拒绝执行搜索。如果为 false,则服务器不必遵守控件。 - 抛出:
-
IOException
- 如果在将提供的参数编码为控件时遇到错误。
-
SortControl
构造一个控件,按升序对属性列表进行排序。将使用与每个指定属性一起使用的排序匹配规则执行排序。- 参数:
-
sortBy
- 要排序的属性 ID 的非空列表。列表按照最高到最低排序键优先级的顺序排列。 -
criticality
- 如果为 true,则服务器必须遵守控件并按请求排序返回搜索结果,否则拒绝执行搜索。如果为 false,则服务器不必遵守控件。 - 抛出:
-
IOException
- 如果在将提供的参数编码为控件时遇到错误。
-
SortControl
构造一个控件,按照排序键列表进行排序。每个排序键指定要使用的排序顺序和排序匹配规则。- 参数:
-
sortBy
- 要排序的键的非空列表。列表按照最高到最低排序键优先级的顺序排列。 -
criticality
- 如果为 true,则服务器必须遵守控件并按请求排序返回搜索结果,否则拒绝执行搜索。如果为 false,则服务器不必遵守控件。 - 抛出:
-
IOException
- 如果在将提供的参数编码为控件时遇到错误。
-