Java / LDAP:getAttribute(“cn”)返回null

时间:2018-03-29 08:03:07

标签: java ldap

在用Java编写的LDAP中搜索后,我有一个有效的条目

cn=DE9-M5T,ou=students,ou=users,o=data

我现在做的时候

if (entry != null && entry.getAttribute("modifyTimestamp") != null) {
         String dn = entry.getDN();
         String modifyTimestamp = entry.getAttribute("modifyTimestamp").getStringValue();
         String oldTimestamp = modificationTimestampCache.get(dn);

         String cnUserId = entry.getAttribute("cn").getStringValue(); 
         ...
 }

最后一行给出了NullPointerException,这意味着

entry.getAttribute("cn")

必须返回null。在文档之后,只有在找不到给定属性(此处"cn")完全匹配时才会发生这种情况。有没有理由在LDAP中"cn"发生这种情况?

2 个答案:

答案 0 :(得分:-1)

从你的代码中我无法弄清楚你的条目及其getAttribute()的确切类型,但请考虑一下:

cn多值 ldap属性,其中modifytimestamp是单值。

因此,cn的值可能存储在类似数组的结构中,我猜你的getAttribute()并不像你期望的那样处理它。

答案 1 :(得分:-1)

并非每个对象类都具有cn属性。只有它出现在架构中的那些。

显然这不是其中之一。