java地址簿类_使用JAVA获取LDAP服务器上全球地址簿

0前言在开发一款用户针对学校的职工和师生的软件中,被要求实现一个比较有趣的需求。客户希望软件能实现对Outlook全球地址簿中人员信息的同步获取。通过这样的接口进行信息对接以后,配合以CRM系统的数据同步,一定程度上就能增强的学校内部各类人员信息的控制和管理。加强学校信息平台的基础搭建,最直接的便是方便了人员之间、人员和部门组织的交流。这样拥有云特征的通讯簿是具备“互联网+”时代特征的,并且是人们所需要的。像许多软件拥有比较良好的软件生态一样,这样做表明软件正在向这一良好趋势靠近。在JAVA中有原生的API可以实现对LDAP的访问。其实也有工具,比如LDAPTemplate。它是基于SPRING开发的,虽然这个开源框架的操作方法和SPRING的JDBCTEMPLETE很相似,同时也传承了前者的一定的复杂性,更重要的是,由于一些IDE之间的支持上的问题,加上笔者对原生的API更加青睐。JNDI(命名和目录访问接口)将各种不同名字和目录服务的访问统一起来并且使用了相同的接口,这里就使用JNDI进行LDAP服务器的连接认证以及一些个人信息的读取。这样也更具通用性,也不需要特别的去下载一些JAR包。1初始化上下文,选择服务提供源这其实有点像利用JNDI建立数据库的连接,Web开发的编程人员一定会很熟悉。创建一个环境变量的集合,其实是一个Hashtable,用以存放服务提供者的名字以及一些环境属性。其中的“com.sun.jndi.ldap.Ldap Ctx Factory”为sun的文件服务提供者。Hashtable Hash Env=new Hashtable()2初始化上下文所需要的信息这些信息会通过环境属性传递给服务提供者,也就是前面提到的。这些信息包括LDAP服务器的位置,以及认证信息。当然不同目录的客户端需要的连接信息会有所不同。然后是初始化上下文。将之前构造的结构以参数形式传入。到这里如果一切顺利正常的话也完成了一个简单的连接认证。为了使用Dir Context对象,要导入javax.naming.directory.Dir Context。Dir Context ctx=new Initial Dir Context(env)3对联系人数据进行收集首先要创建查询对象控制器(Search Controls),并设置查询边界(Search Scope),增加搜索过滤器(Search Filter)设定针对用户个人信息进行查询,然后设置搜索节点并定制返回属性。4查询结果调用Dir Context.search()查询上下文“OU=Multi Share Drives”中匹配的条目。最后对返回的Naming Enumeration对象进行遍历。其中也可以通过thumbnail Photo的属性值,寻找到相应的内容,以文件输出流的形式生成图片文件,以此可以获取联系人的头像信息。search Ctls.set Returning Attributes(returned Atts);Naming Enumeration answer=ctx.search(search Base,search Filter,search Ctls);while(answer.has More()){Search Result sr=(Search Result)answer.next();System.out.println(">>>"+sr.get Name());print Attrs(sr.get Attributes());}5结语以上介绍了通过JAVA获取LDA

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值