`
zyadi1980
  • 浏览: 24757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多

NDI(Java Naming and Directory Interface,Java命名和目录接口)是为了Java程序访问命名服务和目录服务而提供的统一API。

        命名服务,说白了就是提供一个名称键值对的管理,即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操作有:bind,unbind,lookup,rename,NamingEnumeration listBindings,NamingEnumeration list。

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

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

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

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

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

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

分享到:
评论

相关推荐

    LDAP学习笔记相关资料

    LDAP学习笔记 LDAP,全称为轻量级目录访问协议,是一种用于访问和管理分布式目录服务的网络协议。它源于X.500标准,但在设计上更为轻便且可定制,支持TCP/IP通信,这对于互联网访问至关重要。目录服务主要用于快速...

    cas整合ldap实现单点登录学习笔记

    CAS整合LDAP实现单点登录学习笔记 包含所有过程。

    [原创]学习LDAP笔记

    自己学习LDAP的笔记记录,包括有LDAP的简单介绍,在windows下的安装部署及api介绍,Linux下的编译安装及在KDevelop下的api调用。还有对一个可视化管理工具phpLDAPadmin的介绍

    CAS整合LDAP实现单点登录学习笔记.doc

    1. **说明**:整合主要涉及CAS Server和LDAP服务器的配置,以及CAS Client的更新以支持LDAP认证。 2. **安装LDAP**:首先,需要在服务器上安装并配置一个LDAP服务器,如OpenLDAP或Active Directory,创建合适的目录...

    CAS整合LDAP实现单点登录学习笔记.pdf

    1. **配置CAS Server连接LDAP**:设置LDAP的URL、端口、基DN等。 2. **定义LDAP查询语句**:用于查找用户和验证凭证。 3. **测试连接**:确保CAS能够正确地与LDAP交互。 ##### 4.4 配置客户端 (B, 业务服务器) ...

    CAS整合LDAP实现单点登录原理及部署

    CAS整合LDAP实现单点登录的原理及部署学习笔记,cas实现单点登录,ldap负责账户管理

    JAVA WEB学习笔记

    【JAVA WEB学习笔记】——Tomcat中数据源的配置与使用 在Java Web开发中,数据源(DataSource)是管理数据库连接的关键组件。它提供了一种高效、灵活的方式来获取和管理数据库连接,尤其是在大型企业级应用中。...

    domino学习笔记

    Domino学习笔记 Domino学习笔记是关于Domino web应用程序开发设计基础的笔记,分为10个小节。以下是笔记的知识点摘要: Lotus 介绍 Lotus是一种群件产品,具有文档数据库、工作流体系、标准Web服务器和电子邮件...

    aix学习笔记及使用经验

    本文将深入探讨在AIX学习笔记中提到的一些关键知识点,包括AIX的安装、AIX5.2中基于LDAP的用户管理、AIX微码升级以及AIX中的镜像操作。 首先,让我们来看看AIX的安装过程。AIX的安装通常通过System Director或Open...

    JAAS学习笔记

    通过阅读"JAAS学习笔记.doc"和"Weblogic Security Provider学习笔记.docx",我们可以更全面地了解这个主题。 1. **JAAS概述**: - JAAS是Java的安全框架,提供了一种标准化的方式来验证用户身份(认证)并控制对...

    JAVA 五年的工作经验和学习笔记

    由于本人目前允许上传的资源太小,所以无法上传整个的技术学习笔记(JAVA 五年的工作经验和学习笔记),待以后有机会会分享给大家。 技术体系包括: J2SE/J2ME/J2EE/JAVA代码优化/Flex(BlazeDS、PureMVC等技术)...

    自动化运维工具ansible学习笔记

    自动化运维工具Ansible学习笔记 Ansible是一个简单的自动化运维管理工具,可以用来自动化部署应用、配置、编排task(持续交付、无宕机更新等)。Ansible基于Pythonparamiko开发,分布式,无需客户端,轻量级,配置...

    weblogic 学习 笔记 ppt

    本PPT学习笔记将深入探讨WebLogic的核心概念、功能以及如何进行配置和管理。 1. **WebLogic基础** - **Java EE平台**:WebLogic是Java EE平台的一部分,提供了对Servlets、JSP(JavaServer Pages)、EJB...

    apache-shiro 学习笔记

    本学习笔记将深入探讨Shiro 的核心概念与使用方法。 首先,Shiro 的核心组件包括Subject、Realms、Cryptography(加密)和Session Management(会话管理)。Subject 是Shiro 的中心概念,代表了当前的安全主体,如...

    PHP学习笔记

    【PHP学习笔记】深入解析 PHP,全称“PHP: Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其适用于Web开发。与客户端JavaScript不同,PHP代码在服务器端执行,这意味着它可以处理表单数据、生成动态...

    PHP学习笔记总结.doc

    【PHP学习笔记总结】 PHP(超文本预处理器)是一种广泛使用的开源脚本语言,特别适合于Web开发。它能够嵌入HTML中,让开发者在服务器端处理数据,生成动态网页内容。与JavaScript不同,PHP代码在服务器上执行,然后...

    shiro学习笔记0.0.0.0

    尽管这份"shiro学习笔记0.0.0.0"可能内容不多,但通过它,你可以对 Shiro 有个初步的认识,为进一步深入学习打下基础。在实际项目中,根据需求选择合适的 Shiro 组件和配置,可以有效地提升应用的安全性。

Global site tag (gtag.js) - Google Analytics