春天LDAP:查找DN没有抛出异常,如果它不存在
-
27-09-2019 - |
题
使用 LdapTemplate 在Spring LDAP,我有这样的代码:
Object object=null;
try{
String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
object = this.ldapTemplate.lookup(dn);
} catch(final NameNotFoundException e){
// create Object
}
但因为我读过我的约书亚·布洛克我知道,异常不应被用于控制流。有没有一种方法来查找一个DN,看是否存在不如果没有抛出异常?必须有,但我不能找到它。我在寻找的代码是这样的(或类似):
String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
Object object=this.ldapTemplate.someMethod(dn);
if(object==null){
// create Object
}
任何人可以帮助?
BTW:刚刚看的JavaDoc不会帮助。无的方法即掷NameNotFoundException
在的JavaDoc这么说。
解决方案
在lookup()
方法仅假定当你知道某些该DN的存在是为了被使用。这通常是因为你已经搜索并发现了一个用户或组之前,并缓存DN从服务器返回。
如果你正在寻找的东西,可能会或可能不会在那里,使用正确的API是ldapTemplate.search()
,用适当的过滤器。这个返回在没有结果发现它返回一个空列表,而不是抛出异常结果的列表,并且在这种情况。
其他提示
其实,春天迫使你在这里使用异常流量控制(即它不是你的错,这是他们的决定)。
我LdapTemplate几个月前的工作,我不能更好地找到任何然后捕获该异常和评估局势“用户未找到”。
不隶属于 StackOverflow