在Apache目录服务器中存储Java对象,第2部分:(下) - 编程入门网
(清单 6 所示的 SearchForAlice)中介绍的搜索上下文。
这项工作在 清单 8 的步骤 9 进行,在这一步骤中将把 Alice 的 RDN(uid=alice)与原来用于搜索 Alice 数据条目的上下文(ou=users,ou=system)合并在一起。生成的上下文 (uid=alice,ou=users,ou=system)就可以用来查看 Alice 数据条目内部。 现在来看一下 FetchAliceMessagingPreferences 应用程序剩下的步骤。 构建和使用搜索控件 在 清单 8 的步骤 10 中,实例化了一个 SearchControls 对象,可以用它构建一些搜索控件。搜索 控件有两个主要用途: 指定搜索结果中包含的数据类型。在这个示例中,因为您想要检索 Java 对象,所以将调用 SearchControls 对象的 setReturningObjFlag() 方法。这个方法在搜索控件中设置标志,以指定将要执 行的获得某一对象的搜索操作。 指定搜索范围。“搜索范围” 意味着您想在特定数据条目中搜索,还是还想在比该条目更低的级别上 进行搜索。通过调用 SearchControls 对象的 setSearchScope() 方法,可以设置搜索范围。 过滤搜索结果 在 清单 8 的步骤 11 中,制作了名为 “filter” 的字符串。可以看到 filter 字符串的值是 (| (javaClassName=MessagingPreferences) (javaClassName=ShippingPreferences))。括号中的这两个属 性-值对为一个名为 javaClassName 的属性指定了不同的值。还请注意这两个属性-值对之前的 “OR”。 这意味着要查询的是 MessagingPreferences 或 ShippingPreferences 对象。 这个 filter 字符串充当搜索结果的过滤器。这意味着搜索操作之后返回的搜索结果将只包含符合搜 索过滤器指定标准的结果。 在寻找大量属性值时要使用这类搜索过滤器。 提取和处理搜索结果 在 清单 8 的步骤 12 中,您可以调用 search() 方法,并随该方法调用一起传递搜索上下文、搜索 过滤器和搜索控件。 请注意 清单 6 的步骤 5 和 清单 8 中使用的搜索方法调用之间的区别:在清单 6 中,使用的是带 两个参数的 search() 方法,而在 清单 8 中,使用的是该方法的带三个参数的形式。 清单 8 中的步骤 13 和 14 分别与 清单 7 中的步骤 6 和 7 相同。在这些步骤中,处理 NamingEnumeration 对象,并以 SearchResult 对象的形式提取单个的搜索结果。 最后,在步骤 15,调用 SearchResult 对象的 getObject() 方法。getObject() 方法返回一个 Java 对象。 对于 getObject() 方法返回的实例属于哪个类,没法确定,因为在搜索请求中指定了两个类 (MessagingPreferences 或 ShippingPreferences)。返回的结果可能是其中一个类的实例。所以,首 先必须检查对象属于哪个实例,并进行相应的类型转换。检查并转换之后,Java 对象就处于控制之下, 然后就可以调用它的方法了。 壓Apache朕村捲暦匂嶄贋刈Java斤??及2何蛍??和?(6)扮寂:2011-08-13 IBM Bilal Siddiqui哘喘殻會 7. 繍 Java 斤?盾園 壓念中議哘喘殻會嶄?僥楼阻泌採郡會双晒厮将會双晒議 Java 斤?。俊和栖?繍宥狛哘喘殻會 FetchAliceMarshalledPreferences 僥楼泌採盾園匯倖厮園怏議 Java 斤?。 賠汽 9. FetchAliceMarshalledPreferences
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |