有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在JAVA中使用Apache2.0.1LDAP API进行持久搜索

我想知道是否有一种方法可以通过Apache2.0.1JavaLDAP api连接到ldap(389Server),然后持续监听对一组条目上特定属性的更改(在本例中是指具有特定资格的人员)

理想情况下,我希望在ou=people、dc=test、dc=local上运行查询 这可能会在最初出现 dn:uid=tester1,ou=people,dc=test,dc=local givenName:tester1

dn:uid=tester2,ou=people,dc=test,dc=local givenName:tester2

dn:uid=tester3,ou=people,dc=test,dc=local givenName:tester3

如果我在后台将tester3的givenName更改为userTester3,我希望有一个侦听器返回一些userModified事件,告诉我tester3被修改了

作为我希望发生的事情(psuedo代码/不起作用的代码)的一个例子,我想做一些如下的事情:

{
 PersistentSearch ps = new PersistentSearch();
 ps.setChangeType(ChangeType.MODIFY);
 SearchRequest sr = ldaputility.createPersistentSearch(qualifiers, attributes, etc, ps);
 PersistentSearchListener psl = new PersistentSearchListener(sr){
   @Override
   public void entryChanged(Entry e){
     Log.info("The entry just changed");
  }
 }
}

但是,从apache 2.0.1 api中我可以看出,一般来说,没有任何持久搜索侦听器,也没有任何类型的侦听器用于搜索请求,搜索请求得到结果,然后完成。我知道netscape api中有一个搜索侦听器,apache directory server api中有一个持久搜索侦听器。因此,我想问的是,是否有人知道Apache2.0.1LDAP api是否支持您进行初始查询的行为,并且无论何时查询结果发生更改,您都可以拥有一个侦听器来通知新的更改

不幸的是,我没有调试代码/输出,因为我甚至不确定现在要尝试什么代码


共 (1) 个答案

  1. # 1 楼答案

    通过向搜索请求添加PersistentSearch控件(仅更改设置为true,更改类型设置为modifications),ldap服务器似乎不会在搜索请求中将isDone设置为true,因此搜索请求将继续返回可用的更新