设为首页 加入收藏

TOP

JNDI和LDAP学习笔记
2014-11-17 23:44:32 】 浏览:9072
Tags:JNDI LDAP 学习 笔记

  命名服务,说白了就是提供一个名称键值对的管理,即Key-Value对,Key代表一个资源的名称,Value代表资源的真实地址,命名服务允许大家通过唯一的名称找到对应的对象或资源。这样程序只需要知道某种资源的名称,就可以通过JNDI来访问到它,而不需要知道这个资源真实的物理地址。这有点类似于DNS服务,DNS服务将域名解析成IP地址,这样大家只需要在浏览器中输入网站的唯一名称(即域名)就可以访问到该网站,而不需要记住这个网站真实的IP地址。


  目录服务中管理的也是名称键值对,不过其键值是具有层次结构的,像一棵树,即通过一个名称或一个带层次结构的名称,你可以定位到一颗子树,而不只是一个属性。由此可见,目录服务将命名服务的概念进一步引申为提供具有层次结构的信息库。一个目录服务通常拥有一个命名服务,但是一个命名服务不必具有一个目录服务。


  目前,有许多不同厂商提供目录服务产品如NIS、NDS、Active Directory、或者完全的LDAP目录服务,类似于不同数据库厂商的数据库产品,这些目录服务产品的实现是不一样的,各有各的特点。但他们的前端访问都支持LDAP协议。


  LDAP(lightweight directory access protocol,轻量级目录访问协议)是在20世纪90年代早期作为标准目录协议进行开发的。它是目前最流行的目录协议,与厂商、具体平台无关。LDAP用统一的方式定义了如何访问目录服务中的内容,比如增加、修改、删除一个条目。每个具体的目录服务厂商都会向外界提供LDAP协议访问本产品的接口,这样,我们只需要统一关心如何使用LDAP协议就可以了。


  JNDI则是Java中用于访问LDAP的API,开发人员使用JNDI完成与LDAP服务器之间的通信,即用JNDI来访问LDAP,而不需要和具体的目录服务产品特性打交道。这样通过LDAP、JNDI两层抽象,使Java程序对目录服务的访问做到了平台无关性。


  JNDI API是J2SE中的标准API,是通用的API。JNDI中包括5个包:javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi。


  使用JNDI来访问命名服务或目录服务,操作步骤如下:


  1、建立一个HashTable,包含定义所希望使用的JNDI服务的属性,所希望连接的LDAP服务器IP地址以及端口;


  2、将与认证成用户登录有关的任何信息添加到散列表中;


  3、创建初始context对象。如果访问命名服务,则使用InitialContext类,如果访问目录服务,则要使用InitialDirContext类;


  4、使用刚才得到的context对象执行所需的操作,如添加新的条目或者搜索条目;


  5、完成操作后关闭context对象。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇javanio开发实例 下一篇深入Java事务的原理与应用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目