简单介绍

  JNDI(Java Naming and Directory Interface,Java命名和文件夹接口)是SUN公司提供的一种标准的Java命名系统接口。JNDI提供统一的clientAPI,通过不同的訪问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和文件夹系统,使得Java应用程序能够和这些命名服务和文件夹服务之间进行交互。文件夹服务是命名服务的一种自然扩展。两者之间的关键区别是文件夹服务中对象不但能够有名称还能够有属性(比如,用户有email地址),而命名服务中对象没有属性。

 命名服务

  命名服务是一种服务。它提供了为给定的数据集创建一个标准名字的能力。它同意把名称同Java对象或资源关联起来,而不必指出对象或资源的物理ID。这类似于字典结构(或者是Java的map结构)。该结构中键映射到值。

比如在Internet上的域名服务(domain naming service,DNS)就是提供将域名映射到IP地址的命名服务,在打开站点时一般都是在浏览器中输入名字,通过DNS找到对应的IP地址。然后打开。

  全部的因特网通信都使用TCP、UDP或IP协议。

IP地址由4个字节32位二进制数字组成,数字和名字相比。对于人来说名字比数字要easy记忆。但对于计算机来讲,它更善于处理数字。

  事实上全部的命名服务都提供DNS这样的基本功能。即一个系统向命名服务注冊,命名服务提供一个值到还有一个值的映射。然后,另外一个系统訪问命名服务就能够取得映射信息。这样的交互关系对分布式企业级应用来讲显得很重要,在Java中,主要的名字操作包括在Context接口中。

  文件夹服务

  文件夹服务是一种特殊类型的数据库。与SQL Server、Access、Oracle等关系数据库管理系统相反,构造文件夹服务的目的是为了处理基于行为的事务。而且使用一种关系信息模型。文件夹服务将命名服务的概念进一步引申为提供具有层次结构的信息库,这一信息库除了包括一对一的关系外,还有信息的层次结构。对文件夹服务而言,这样的层次结构通经常使用于优化搜索操作,而且也能够按实际情况进行分布或者跨网络复制。

  一个文件夹服务通常拥有一个名字服务(可是一个名字服务不必具有一个文件夹服务)。如电话簿就是一个典型的文件夹服务,一般先在电话簿里找到相关的人名,再找到这个人的电话号码。

  每一种文件夹服务都能够存储有关username、用户password、用户组(如有关訪问控制的    信息)、以太网地址、IP地址等信息。它所支持的信息和操作会由于所使用的文件夹服务的不同而不同。

遗憾的是,訪问不同文件夹服务的协议也会不同。所以读者须要了解多     种API。

  这就是JNDI的起源,就像JDBC一样,JNDI充当不同名称和文件夹服务的通用API或者说是前端,然后使用不同的后端适配器来连接实际服务。

  JNDI是J2EE技术中的一个完整的组件。它支持通过一个单一的方法訪问不同的、新的和已经存在的服务的方法。

这样的支持同意不论什么服务提供商运行通过标准服务提供商接口(SPI)协定插入JNDI框架。

  作用

  JNDI的功能简单说就是能够简单的方式去查找某种资源。

JNDI是一个应用程序设计的API。为开发者提供了查找和訪问各种命名和文件夹服务的通用、统一的接口,类似JDBC都是构建在抽象层。

比方在Tomcat中配置了一个JNDI数据源,那么在程序中之须要用Java标准的API就能够查找到这个数据源,以后数据源配置发生变化了。等等,程序都不须要修改。之须要改改JNDI的配置即可。添加了程序的灵活性。也给系统解耦了。

  总结

  J2EE 规范要求全部 J2EE 容器都要提供 JNDI 规范的实现。JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组件在执行时间接地查找其它组件、资源或服务的通用机制。在多数情况下,提供 JNDI 供应者的容器能够充当有限的数据存储。这样管理员就能够设置应用程序的执行属性。并让其它应用程序引用这些属性(Java 管理扩展(Java
Management Extensions,JMX)也能够用作这个目的)。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就能够发现所须要的资源。而不用了解这些间接性。

  在 J2EE 中。JNDI 是把 J2EE 应用程序合在一起的粘合剂。JNDI 提供的间接寻址同意跨企业交付可伸缩的、功能强大且非常灵活的应用程序。这是 J2EE 的承诺,并且经过一些计划和预先考虑,这个承诺是全然能够实现的。

  

Java系列之JNDI的更多相关文章

  1. 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)

    Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...

  2. Java系列笔记(2) - Java RTTI和反射机制

    目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...

  3. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

  4. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  5. Java系列笔记(1) - Java 类加载与初始化

    目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...

  6. Java系列笔记(6) - 并发(上)

    目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...

  7. 【转载】Java系列笔记(1) - Java 类加载与初始化

    Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 ...

  8. 【转载】Java系列笔记(3) - Java 内存区域和GC机制

    Java系列笔记(3) - Java 内存区域和GC机制 转载:原文地址http://www.cnblogs.com/zhguang/p/3257367.html 目录 Java垃圾回收概况 Java ...

  9. .net基础学java系列(一)视野

    本文目的在于扩展你我视野,求各位大神帮忙补充下表格中的内容,特别是Java的相关内容. 下面的文字纯是为了凑足150个字. 本人作为一名普通的.net程序员,也快混了十年了.在.net方面的知识面较广 ...

随机推荐

  1. Java&Xml教程(一)简介

    XML是广泛用于数据传输和存储的技术.Java语言提供个各种各样的API来解析XML,例如DOM.SAX.StAX.JAXB.也还有一些其他的API用于解析XML,例如JDOM.本教程的目的是探索使用 ...

  2. 努比亚(nubia) Z18 mini NX611J 解锁BootLoader 并刷入recovery ROOT

    努比亚(nubia)  Z18 mini NX611J解锁BootLoader 并刷入recovery ROOT 工具下载链接:https://pan.baidu.com/s/1toU-mTR9FNE ...

  3. Angular——数据绑定

    基本介绍 angularjs可以实现数据的双向绑定:(1)视图到模型的数据绑定,(2)模型到数据的绑定 基本使用 1.ng-model可以实现视图到模型的数据传输 2.{{name}}可以实现模型到视 ...

  4. JSP学习笔记 - 内置对象 Request

    1.主要掌握以下5个内置对象及其所属类,必须学会在java docs里根据类名查找相应的方法 request     javax.servlet.http.HttpServletRequest res ...

  5. shell编程之grep命令的使用

    大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是: 在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,不要把二者搞混了.切记!!! 通常有三种文本处理工具/ ...

  6. Photoshop如何实现图片相对画布居中

    先按ctrl+A,再选择要居中的图层,然后就会发现居中按钮被激活了

  7. demo__webpack

    webpack 中使用的包更新非常频繁,使用方式可能很快就会改变,解决方式 看webapck文档 和 包的使用文档 看包的源码 其他... 环境 win10 + webstorm 2019.1.3 + ...

  8. 网际协议IP简述

    最近花了些时间重新回顾了谢希仁教授主编的<计算机网络>关于网络层的章节,这是一本高校教材,里面关于计算机网络的内容比较基础,并且讲的很细致,笔者针对网际协议IP地址部分觉得有必要进行阅读后 ...

  9. Django URL(路由系统)

    Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的 ...

  10. 10.多shard场景下relevence score可能不准确

    主要知识点 多shard场景下relevence score可能不准确的原因 多shard场景下relevence score可能不准确解决方式     一.多shard场景下relevance sc ...