# LDAP - Eintrag löschen



## Tropico85 (1. Feb 2008)

Hallo zusammen,

ich möchte aus einem LDAP Verzeichnis einen Eintrag löschen.
Ich habe schon in einigen Quellen nachgeschaut und nachfolgenden Code gefunden:


```
// LDAP-Verbindung aufbauen
...
DirContext ctx = new InitialDirContext();
ctx.unbind("sn=xyz,ou=personen");
...
```
Leider funktioniert das ganze nicht, und ich weiß nicht warum.
Vielleicht kann mir einer auf die Sprünge helfen.

Dankeschön!


----------



## ms (1. Feb 2008)

Fehlermeldung?
Genauere Beschreibung der Umgebung wäre auch noch interessant.

ms


----------



## maki (1. Feb 2008)

LDAP ist eigentlich nicht dafür gedacht bzw. meist zum lesen verwendet, wahrscheinlich fehlen dir die Rechte.


----------



## Tropico85 (1. Feb 2008)

Du hast Recht. Eine Fehlermeldung wäre ganz hilfreich...

Exception in thread "main" javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object];

Ich habe es allerdings auch schon geschafft den Code ohne Fehler durchlaufen zu lassen. Danach war der Eintrag aber immer noch vorhanden....


----------



## ms (1. Feb 2008)

Wie hast du den überprüft ob der Eintrag gelöscht ist?
Möglicherweise nur ein Refreshproblem deines Ldap-Clienttool?

ms


----------



## byte (1. Feb 2008)

Sicher dass der Distinguished Name richtig ist? Dort findet er offenbar nichts. Am besten einfach vorher den Eintrag suchen lassen. Dann weisst Du, dass der Pfad auch wirklich richtig ist.

http://www.directory-info.com/LDAP/LDAPErrorCodes.html


----------



## PELLE (4. Feb 2008)

Tropico85 hat gesagt.:
			
		

> Hallo zusammen,
> 
> ich möchte aus einem LDAP Verzeichnis einen Eintrag löschen.
> Ich habe schon in einigen Quellen nachgeschaut und nachfolgenden Code gefunden:
> ...



Wenn ich dir eins empfehlen kann, dann ist bezüglich LDAP das Aufsuchen des Sun Java forums/subforum JNDI:

http://forum.java.sun.com/forum.jspa?forumID=51

 das Beste was du machen kannst. Benutzt die Suche dort und du bekommst für jede exception genügend Antworten warums net tut.

Vor allem arbeite dich in die Grundlagen ein:

http://java.sun.com/products/jndi/tutorial/trailmap.html

Zu deiner NamingException:

http://java.sun.com/docs/books/tutorial/jndi/ldap/exceptions.html

wenn du einen Eintrag löschen willst macht man das sicher nicht mit unbind...


```
try
			    {
					InitialLdapContext ctx = new InitialLdapContext(initConnection(),null);					
					ModificationItem[] mods = new ModificationItem[1];
					mods[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE,new BasicAttribute("nsAccountLock", "true"));
					ctx.modifyAttributes("DN des Benutzers", mods); 								
					System.out.println("Das Benutzerkonto von: " + "DN des Benutzers" + "wurde deaktiviert");
					
					ctx.close(); 
				} 
				catch (NamingException e)
				{
					System.err.println("Konto konnte nicht deaktiviert werden: " + e);
				}
```

dieser Codeschnipsel ist schon lange als dass ich in noch erklären könnte ^^ aber wichtig für dich um einen ldap eintrag zu löschen ist das ModificationItem, modifyAttributes, und ADD_ATTRIBUTE gibt auch noch REMOVE_ATTRIBUTE etc...


----------

