Listing 2: Read.java — Reads an object in a directory tree

package jndisamples;

import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;

public class Read {
  public static void main(String[] args){
    try{
      InitialDirContext root = 
         login("127.0.0.1",
               "cn=mseaver,ou=HR,o=SLC","password");

      // Read SN Attribute of cn=admin,o=services
      DirContext ctx = 
         (DirContext)root.lookup("cn=mseaver,ou=HR,o=SLC");
      String[] sn = {"sn"};
      Attributes attrs = ctx.getAttributes("", sn);
      Attribute attr = attrs.get("sn");
      if(attr != null){
        String value = (String)attr.get();
        System.out.println("SN: " + value);
      }
      root.close();

    }catch(NamingException ex){
      System.out.println("Error: " + ex);
    }
  }

  private static InitialDirContext
  login(String ipaddr, String user, String password)
      throws NamingException{
    Hashtable environment = new Hashtable();
    environment.put(Context.INITIAL_CONTEXT_FACTORY, 
                    "com.sun.jndi.ldap.LdapCtxFactory");
    environment.put(Context.PROVIDER_URL,
                    "ldap://" + ipaddr + ":389");
    environment.put(Context.SECURITY_PRINCIPAL, user);
    environment.put(Context.SECURITY_CREDENTIALS, password);
    environment.put(Context.SECURITY_AUTHENTICATION, "simple");

    InitialDirContext root = new InitialDirContext(environment);
    System.out.println("Successfully Logged-In");

    return root;
  }
}

/* Output:
Successfully Logged-In
SN: Seaver
*/
— End of Listing —