这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK版本说明以获取有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息。
当客户端希望服务器发送排序后的搜索结果时,使用排序控制。在客户端需要根据某些标准对结果进行排序,但无法自行执行排序过程的情况下,服务器端排序是很有用的。排序控制在RFC 2891中指定。下面的类提供了支持排序控制所需的功能。
SortKey是基于它服务器对结果进行排序的键的有序列表。
下面的示例说明了客户端和服务器之间的交互,客户端执行搜索请求并要求基于属性"cn"进行服务器端排序。
// 激活排序 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()); // 处理条目的响应控制(如果有的话) 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 { // 处理其他响应控制(如果有的话) } } }
完整的JNDI示例可以在这里
找到。
注意:排序控制受Oracle Directory Server和Windows Active Directory服务器的支持。