Java tutorial
import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.directory.SearchControls; import javax.naming.event.EventDirContext; import javax.naming.event.NamingEvent; import javax.naming.event.NamingExceptionEvent; import javax.naming.event.NamingListener; import javax.naming.event.ObjectChangeListener; public class Main { public static void main(String[] argv) throws Exception { String url = "ldap://localhost/o=JNDITutorial"; Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, url); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "userDN"); env.put(Context.SECURITY_CREDENTIALS, "secret"); EventDirContext ctx = (EventDirContext) (new InitialContext(env).lookup("ou=People")); NamingListener listener = new SampleObjListener(); SearchControls ctls = new SearchControls(); ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); String filter = "(mail=*)"; ctx.addNamingListener("cn=YourName", filter, ctls, listener); } } class SampleObjListener implements ObjectChangeListener { public SampleObjListener() { } public void objectChanged(NamingEvent evt) { System.out.println(evt.getNewBinding().getName()); System.out.println(evt.getOldBinding().getName()); } public void namingExceptionThrown(NamingExceptionEvent evt) { System.out.println(evt.getException()); } }