在使用同步的Search时,出现问题,我的程序 具体描述如下:一个类(class A)对应着目录服务器中各个节点的字段属性等在一个负责操作目录服务器的类中  定义了一个方法 对目录服务器的某一层进行搜索,这个方法根据每次搜索返回的结果集的大小new一个类A的对象数组;每次读取到一个节点的属性的将属性与值放入hashmap中,读取完一个节点属性,就将map中的内容放入到对象数组中。
这样做出现一个问题就是,连续两次查询同一层节点时在各个参数均一致的情况下,第一次返回的结果集正确的,第二次查询的结果集是空(两次调用时参数都一致)然而不用填充map的方法,将每次搜索到的结果打印控制台上,却不出错,多次执行的结果是一致的。有哪位高手使用过novell提供的ldap.jar中这个search方法,望赐教一下,先谢谢,不甚感激

解决方案 »

  1.   

    那肯定你查询的操作是对的,放入map中出错了,好好检查一下代码,后放入hashmap中的数据是不是覆盖了前面的数据。
      

  2.   

    应该不会是map的问题,map每次使用完之后都clear了;每次查询完之后,会根据结果集的个数(searchResults.getCount())决定new一个对象数组,如果结果集的个数为0的话,是直接返回null的,也就是说出错的这次查询根本就没有用到map。谁对这块比较熟悉,遇到这种问题,传授点经验吧
      

  3.   

    还有IDE用的是Eclipse,在运行的时候出错,有时候在单步运行的时候能得出预期结果怀疑是不是search是非阻塞异步执行?我查阅它的帮助文档,其中说明了我使用的是同步阻塞的
    不解中……
      

  4.   

    我以前用的是javax.naming.directory.DirContext查询的,这个是没问题的。
      

  5.   

    感谢kaynezhang的帮助,那我去试试javax.naming.directory这个问题困扰我几周了,一直在查看日志,以为是服务器端出问题了,最后定位都这个查询方法,但是它带的文档讲的貌似很模糊,还有谁使用过novell提供的ldap.jar,可以给我指点一下,我先去试试javax.naming.directory
      

  6.   


    用novell的jar出问题了,卡住了,无法继续,花了半天时间把javax.naming.directory的看法基本搞清楚了,决定用这个包试试了呵呵 ,多谢赐教