快速业务通道

在Apache目录服务器中存储Java对象,第2部分:(下) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
(清单 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

public class FetchAliceMarshalledPreferences {    public FetchAliceMarshalledPreferences() {      try      {        //------------------------------------------        //Step1: Setting up JNDI properties for ApacheDS        //------------------------------------------        InputStream inputStream = new FileInputStream ( "ApacheDS.properties");        Properties properties = new Prope

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号