2011-08-02 26 views
0

我有一個奇怪的LdapContext.modifyAttributes(name,mods)方法的問題。 它給了我一個NameNotFoundException,即使該對象存在於相同的路徑。 (我已經檢查了一小段返回* distinguishedName * s的代碼) 這裏是我的示例代碼;JNDI modifyAttributes和NameNotFoundError

ModificationItem[] mods = new ModificationItem[1]; 
      for(Group g: this.groups) 
      { 
       mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,new BasicAttribute("member", g.getMembers())); 
       this.context.modifyAttributes("cn="+g.getGroupName()+", ou=OU_MyGroups", mods); 
      } 

這是我的連接字符串,如果有幫助:

this.setConnectionUrl("ldap://10.77.162.187:389/dc=C4test"); 

另外,我試圖讓從同一個對象的屬性,使用相同的名稱字符串。

Attributes attr = this.context.getAttributes("cn="+g.getGroupName()+", ou=OU_MyGroups"); 

它工作得很好。 所以我現在沒有想法。

這是我的堆棧跟蹤:

Exception in thread "main" javax.naming.NameNotFoundException: [LDAP: error code 32 - 00000525: NameErr: DSID-031A0F80, problem 2001 (NO_OBJECT), data 0, best match of: '' 

; remaining name 'cn=INSAN KAYNAKLARI DIREKTORLUGU, ou=OU_MyGroups' 
    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 com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(Unknown Source) 
    at javax.naming.directory.InitialDirContext.modifyAttributes(Unknown Source) 
    at com.carrefour.activeDirectory.GroupUpdater.updateGroups(GroupUpdater.java:140) 
    at com.carrefour.activeDirectory.GroupUpdater.<init>(GroupUpdater.java:129) 
    at com.carrefour.activeDirectory.ActiveDirectoryUpdater.main(ActiveDirectoryUpdater.java:101) 

回答

0

什麼的this.context()的DN?如果它是'ou = OU_MyGroups',則不需要在modifyAttributes()中再次指定。一般來說,只需要指定相對於您調用modifyAttributes()的上下文而修改的項目的RDN。

+0

我試圖修改的組完整的專有名稱是「cn = groupName,ou = OU_MyGroups,dc = C4test」。在getAttributes方法中使用相同的distinguishedName工作得很好,但是當我在modifyAttributes上使用它時出現問題。還有另一個線程具有相同的問題http://stackoverflow.com/questions/2317102/jndi-add-users-to-groups-with-ads但沒有明確的解決方案的問題。 – ismail

+0

@isail但是我的問題的答案是什麼?你在調用modifyAttributes()的上下文的DN是什麼?成員()中的所有DN是否準確? – EJP

+0

謝謝,我明白了。事實證明,這不是提出這個錯誤的組DN。我試圖增加成員的是成員的DN。 – ismail