Spring ldaptemplate更新组,具有较大的成员资格问题

时间:2017-09-21 01:22:20

标签: spring spring-ldap

我在使用>更新Active Directory中的组时遇到问题1500名成员。它只是试图修改成员属性。

使用较少的成员更新组时没有问题。我还可以添加一个包含许多成员的新组。

但是如果它太大,更新失败。我可以尝试将大组更新为只有一个成员,它仍然会失败并出现相同的错误。

在modifyAttributes行上代码失败:

ModificationItem[] modList = 
nameContext.getDirContextAdapter().getModificationItems();

writeADTemplate.modifyAttributes(nameContext.getName(),modList);

StackTrace下面:

org.springframework.ldap.NameAlreadyBoundException: [LDAP: error code 68 - 
00000562: UpdErr: DSID-031A122A, problem 6005 (ENTRY_EXISTS), data 0
nested exception is javax.naming.NameAlreadyBoundException: [LDAP: error 
code 68 - 00000562: UpdErr: DSID-031A122A, problem 6005 (ENTRY_EXISTS), data 0
remaining name 'cn=Atlassian Users,ou=Groups'
at org.springframework.ldap.support.LdapUtils.convertLdapException
(LdapUtils.java:169)
at org.springframework.ldap.core.LdapTemplate.executeWithContext
(LdapTemplate.java:810)
at 
org.springframework.ldap.core.LdapTemplate.executeReadWrite 
(LdapTemplate.java:802)
at org.springframework.ldap.core.LdapTemplate.modifyAttributes
 (LdapTemplate.java:967)
 more ... 
Caused by: javax.naming.NameAlreadyBoundException: [LDAP: error code 68 - 
00000562: UpdErr: DSID-031A122A, problem 6005 (ENTRY_EXISTS), data 0
remaining name 'cn=Atlassian Users,ou=Groups'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(Unknown 
Source)
at 
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(Unknown 
Source)
at javax.naming.directory.InitialDirContext.modifyAttributes(Unknown Source)
at 
org.springframework.ldap.core.LdapTemplate$19.executeWithContext 
(LdapTemplate.java:969)
at 
org.springframework.ldap.core.LdapTemplate.executeWithContext 
(LdapTemplate.java:807)
... 88 more

1 个答案:

答案 0 :(得分:0)

好吧我的真正问题是,如果值为>,Active Directory将不会返回类似成员的多值属性。 1500。 当我获得当前组成员时,它返回0值,因此我的代码试图将所有成员添加回组。

看起来我必须弄清楚如何使用 DefaultIncrementalAttributesMapper获取所有成员