Mega Code Archive

 
Categories / Java / JNDI LDAP
 

Registering for Object Changes in the Directory

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());   } }