折腾了一天,终于初步了解JAVA怎么在OpenLDAP增加删除数据了。代码如下

/**
 *
 * @author chenyi
 */
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.*;
import java.util.*;

public class ChenYi {

DirContext ctx = null;
    String account = "Manager";//操作LDAP的帐户。默认就是Manager。
    String password = "secret";//帐户Manager的密码。
    String root = "dc=example,dc=com"; //LDAP的根节点的DC

public ChenYi() {
        init();
        add();
        //delete();
        close();
    }

public void init() {
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://192.168.100.221:389/");      
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "cn=" + account + "," + root);
        env.put(Context.SECURITY_CREDENTIALS, password);
        try {
            ctx = new InitialDirContext(env);//初始化上下文
            System.out.println("认证成功");//这里可以改成异常抛出。
        } catch (javax.naming.AuthenticationException e) {
            System.out.println("认证失败");
        } catch (Exception e) {
            System.out.println("认证出错:" + e);
        }
    }

public void add() {
        try {
            String newUserName = "hi";
            BasicAttributes attrs = new BasicAttributes();
            BasicAttribute objclassSet = new BasicAttribute("objectClass");
            objclassSet.add("top");
            objclassSet.add("organizationalUnit");
            attrs.put(objclassSet);
            attrs.put("ou", newUserName);
            ctx.createSubcontext("ou=" + newUserName + "," + root, attrs);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Exception in add():" + e);
        }
    }

public void delete() {
        try {
            ctx.destroySubcontext("ou=hi,dc=example,dc=com");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Exception in delete():" + e);
        }
    }

public void close() {
        if (ctx != null) {
            try {
                ctx.close();
            } catch (NamingException e) {
                System.out.println("NamingException in close():" + e);
            }
        }
    }

public static void main(String[] args) {
        new ChenYi();
    }
}

红线标记的地方特别注意,我看很多文章中写的都类似于env.put(Context.PROVIDER_URL, "ldap://localhost:7001/" + root); 经过我一天的折腾发现加上了root,会报javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object];错误 。也许这是新版不兼容旧版程序吧

JAVA,OpenLDAP使用心得(2)相关推荐

  1. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  2. Java异常学习心得

    2019独角兽企业重金招聘Python工程师标准>>> Java异常学习心得             本文重在Java中异常机制的一些概念.写本文的目的在于方便我很长时间后若是忘了这 ...

  3. java容器doc_关于Java容器类学习心得体会.doc

    关于Java容器类学习心得体会 由于小编对C++比较熟悉所以学习Java应该重点体会Java带来的新概念本文基本上是Java标准库中集合框架的基本概念没有例子写本文的目的在于方便小编很长时间后若是忘了 ...

  4. java实训心得感想30字,java实训心得体会感想

    java实训心得体会感想 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.通过本次实训,受益很多,下面谈谈个人的心得体会.本文是java实训心得,希望对大家有帮助. java实训心得篇一 ...

  5. java课设的总结和体会,JAVA设计培训心得体会【两篇】

    [www.hywsbj.com--心得体会] [导语]培训是给新员工或现有员工传授其完成本职工作所必需的正确思维认知.基本知识和技能的过程.基于认知心理学理论可知,职场正确认知的传递效果才是决定培训效 ...

  6. java实验2总结心得,java实验的心得体会

    java实验的心得体会 java实验心得体会篇一:java实验总结 1. 设计一个Person类,包含:姓名,年龄,性别.要求:该类至多只能创建一男.一女两个对象! 2. 设计一个测试类Test,创建 ...

  7. java课程设计心得体会绪论

      java课程设计心得体会绪论[篇1] 在上学期的最后一周和本学期的第一周,我和同组的学员在学校机房进行了JAVA暑期实训,现在已经结束了. 回首上学期的java学习,重点还是在学习概念等一些常识性 ...

  8. JAVA面向对象学习心得

    JAVA面向对象学习心得 ​ Java是面向对象编程的语言,在学习完Java基础语法后,下一个内容就是面向对象的内容了.那么什么是面向对象呢?下面就简单解释一下. 面向过程编程和面向对象编程 ​ 提到 ...

  9. java类的心得_java面向对象学习心得3篇

    日记网 >> 专题 java面向对象学习心得3篇 更新时间:2018/6/15 8:27:00  点击率:937  手机版 java面向对象学习心得3篇来自简单日记网精选推荐.在面向对象的 ...

  10. java实训心得感想30字_java实训心得体会范文

    摘要:这次实训为我提供了与众不同的学习方法和学习体会,从书本中面对现实,为我将来走上社会打下了扎实的基础.作为在校计算机专业的学生,现在我能做的就是吸取知识,提高自身的综合素质,提高自己的职业技能,自 ...

最新文章

  1. MySQL 安装 启动命令总结
  2. Cython——[AttributeError: ‘MSVCCompiler‘ object has no attribute ‘compiler_so‘]解决方案
  3. ubuntu系统使用Anaconda安装tensorflow-gpu环境
  4. matlab 滤波_MATLAB之简单卡尔曼滤波
  5. 看后端程序员调试CORS的姿势
  6. 最短路+状压DP【洛谷P3489】 [POI2009]WIE-Hexer
  7. 单层感知机实现或运算
  8. Tensorflow(GPU版安装后代码测试)
  9. Oracle数据库面试题
  10. mac苹果系统的电脑ip地址命令
  11. epsonl360打印机连接电脑_爱普生l360驱动下载
  12. java.sql.SQLException: Access denied for user '''localhost' (using password: NO) 的处理方法
  13. Java就业企业面试问题-电商项目
  14. 使用mpx开发外卖小程序完整教程(附源码)
  15. 小程序----页面样式(WXSS)
  16. C语言计算今天是一年的第几周
  17. java一个等号_java中等号的涵义
  18. 软件性能测试重要性,软件性能测试的重要性及策略-2
  19. [数位dp][优先队列] Bzoj 3131 淘金
  20. 基于Android Studio的蓝牙通信的简单应用与开发

热门文章

  1. OpenSSL漏洞介绍
  2. Thymeleaf 最全
  3. 前端 | ( 十一)CSS3简介及基本语法(上) | 尚硅谷前端html+css零基础教程2023最新
  4. windows mysql服务消失,创建服务后mysql错误1607无法启动
  5. 深度解读智慧农业:什么是智慧农业?
  6. Visual Studio+oneAPI搭建fortran环境以及部分oneAPI无法集成到Visual Studio中问题
  7. 展览会Exhibition
  8. 单细胞注释之坑-通过AddModuleScore注释细胞
  9. 四川速匠抖音个人IP的技巧有哪些
  10. 机器学习(十) 强化学习