我使用以下rdn创建了一个角色:
erglobalid=3224285689051620393,ou=roles,erglobalid=00000000000000000000,ou=org,dc=com
我删除了上述角色
现在,LDAP中不存在上述rdn。
但我想检查LDAP中是否存在?为此有什么方法吗?
我使用search()
和lookup()
方法进行了检查,但是这些方法都抛出异常,因为根据我的应用程序的要求,我必须在catch块中编写代码并不理想< / p>
有人可以帮助我吗
答案 0 :(得分:0)
我使用以下rdn创建了一个角色:
erglobalid=3224285689051620393,ou=roles,erglobalid=00000000000000000000,ou=org,dc=com
不,你没有。这是DN(专有名称),而不是RDN(相对专有名称)。 RDN的一部分是erglobalid=3224285689051620393.
我删除了上述角色
对你有好处。
现在,LDAP中不存在上述rdn。
以上 DN 在LDAP中不存在。
我想检查LDAP中是否存在?
它没有。你删除了它。如果删除失败,则会抛出异常。如果它没有失败,它就会被删除,所以它不存在。
有没有这样的方法?
是的,有search()
和lookup()
方法。
我使用
search()
和lookup()
方法进行了检查,但是这些方法都抛出异常...因此,根据我的应用程序的要求,我必须在catch块中编写代码
正确。
哪个不理想
这些API的设计方式。厄运。你无能为力。如果没有匹配,NB search()
不会抛出异常:它返回SearchResult
的空枚举。
我想象你真正询问的是删除之前检查是否存在。这也是一个坏主意:它导致在服务器上进行两次查找而不是一次,并且是网络流量的两倍或更多......并且它会遇到时间窗口问题:它可能在您测试时存在而在您不存在时删除,或者更糟糕的是,它可能在您测试时不存在,但在删除时存在,或者您将被删除时存在。不要这样做。不要这样想。删除是一种原子操作,如果条目不存在则会失败。这正是你想要的。