Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


17.2

Programmierung mit einem Verzeichnisdienst


Für den speziellen Umgang mit Verzeichnisdiensten (wie beispielsweise LDAP) benutzt man statt des normalen Context die Unterklasse DirContext, die neben den Methoden für Namensdienste spezifische Methoden für Verzeichnisdienste anbietet.

Jede Bindung besitzt neben dem eigentlichen Objekt Attribute, die über entsprechende Methoden im DirContext abgefragt werden können. Über die zusätzliche Methode search() kann zudem eine Suchanfrage über das Verzeichnis gestellt werden.

Im folgenden Beispiel wird eine LDAP-spezifische Suchanfrage gestellt. Hierbei wird die boolesche Verknüpfung (¦ bedeutet »oder«) vor die Argumente gestellt. Es werden also alle (Unter-)Elemente gesucht, die unterhalb (beliebige Tiefe) des Verzeichnisbaums c=DE (Land), o=FH-Heilbronn (Organisation) und ou=People (Organisationseinheit) liegen und deren Attribut fhstudiengang MI oder IM ist.

  Hashtable env = new Hashtable();
  // Provider (Implementierung setzen)
  env.put(Context.PROVIDER_URL, 
          "ldap://ldap-master.fh-heilbronn.de:389");

  // Kontext setzen (Directory-Kontext)
  DirContext ctx = new InitialDirContext(env);

  // Suchparameter
  SearchControls constraints = new SearchControls();
  // Auch Unterebenen durchsuchen
  constraints.setSearchScope(
      SearchControls.SUBTREE_SCOPE);

  // Suche starten
  NamingEnumeration results = ctx.search(
     "ou=People,o=FH-Heilbronn,c=DE", 
    "|(fhstudiengang=MI)(fhstudiengang=IM)", 
    constraints);

  // Durch alle gefundenen Datensätze durchgehen
  while (results != null && results.hasMore()) {
     // Das nächste Ergebnis aussuchen
     SearchResult si = (SearchResult) results.next();
     // Attribute
     Attributes attrs = si.getAttributes();
     if (attrs == null) 
        System.out.println("No attributes");
      else // Nur die UID ausgeben
        System.out.println(
                "uid: "+attrs.get("uid"));
  }


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.