openDS监听器

-------------------------------------------------------------备忘-------------------------------------------------------------------------

/**  
 * LDAP 事件监听器测试  
 */  
class LDAPListenerTest {   
  
    public static void main(String[] args) {   
        // Set up environment for creating initial context   
        Hashtable<String, Object> env = new Hashtable<String, Object>(11);   
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");   
        env.put(Context.PROVIDER_URL, "ldap://localhost:389");   
        env.put(Context.SECURITY_PRINCIPAL, "cn=root");   
        env.put(Context.SECURITY_CREDENTIALS, "root");   
        try {   
            // Get event context for registering listener   
           // String baseDN = "ou=07,ou=csg,o=serc,c=cn";   
        	String baseDN = "dc=example,dc=com";   
            EventContext ctx = (EventContext) (new InitialContext(env).lookup(baseDN));   
            // Create listener   
            NamingListener unsolListener = new UnsolicitedNotificationListener() {   
  
                public void notificationReceived(UnsolicitedNotificationEvent evt) {   
                    System.out.println("received: " + evt + ",notification:" + evt.getNotification());   
                }   
  
                public void namingExceptionThrown(NamingExceptionEvent evt) {   
                    System.out.println(">>> UnsolListener got an exception");   
                    evt.getException().printStackTrace();   
                }   
            };   
            NamingListener namespaceListener = new NamespaceChangeListener() {   
  
                public void objectAdded(NamingEvent evt) {   
                    System.out.println("objectAdded: " + evt.getOldBinding() + "\n=> " + evt.getNewBinding());   
                    System.out.println("\tchangeInfo: " + evt.getChangeInfo());   
                }   
  
                public void objectRemoved(NamingEvent evt) {   
                    System.out.println("objectRemoved: " + evt.getOldBinding() + "\n=> " + evt.getNewBinding());   
                    System.out.println("\tchangeInfo: " + evt.getChangeInfo());   
                }   
  
                public void objectRenamed(NamingEvent evt) {   
                    System.out.println("objectRenamed: " + evt.getOldBinding() + "\n=> " + evt.getNewBinding());   
                    System.out.println("\tchangeInfo: " + evt.getChangeInfo());   
                }   
  
                public void namingExceptionThrown(NamingExceptionEvent evt) {   
                    System.err.println(">>>NamespaceChangeListener Exception");   
                    evt.getException().printStackTrace();   
                }   
            };   
            NamingListener objectListener = new ObjectChangeListener() {   
  
                public void objectChanged(NamingEvent evt) {   
                    System.out.println("objectChanged: " + evt.getOldBinding() + "\n\t=> " + evt.getNewBinding());   
                    System.out.println("\tchangeInfo: " + evt.getChangeInfo());   
                }   
  
                public void namingExceptionThrown(NamingExceptionEvent evt) {   
                    System.err.println(">>>ObjectChangeListener Exception");   
                    evt.getException().printStackTrace();   
                }   
            };   
            // Register listener with context (all targets equivalent)   
            ctx.addNamingListener("", EventContext.SUBTREE_SCOPE, unsolListener);   
            ctx.addNamingListener("", EventContext.SUBTREE_SCOPE, namespaceListener);   
            ctx.addNamingListener("", EventContext.SUBTREE_SCOPE, objectListener);   
            System.out.println("Listener to LDAP server ...");   
            // Wait 1 minutes for listener to receive events   
            try {   
                Thread.sleep(60000 * 60);   
            } catch (InterruptedException e) {   
                System.out.println("sleep interrupted");   
            }   
            // Not strictly necessary if we're going to close context anyhow   
            ctx.removeNamingListener(unsolListener);   
            // Close context when we're done   
            ctx.close();   
            System.out.println("Remove Listener ...");   
        } catch (NamingException e) {   
            e.printStackTrace();   
        }   
    }   
}  

 -------------------------------------------------------程序来源网络 但是都经过本人测试---------------------------------------------------------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值