如何在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 楼答案
通过向搜索请求添加PersistentSearch控件(仅更改设置为true,更改类型设置为modifications),ldap服务器似乎不会在搜索请求中将isDone设置为true,因此搜索请求将继续返回可用的更新