Java学习——何为JNDI
曾记得在做机房收费系统的时候就接触到了API,由于它的功能非常强大,可是自己对它却不怎么了解。所以当时是又爱又怕。现在,一路走来才明确,事实上它就是一组接口。仅仅要我们去了解它就会发现。它事实上也没想的那么可怕。
今天我们来看一下java中的接口——JNDI。
概念
Java命名和文件夹接口(Java Naming and Directory Interface,JNDI)是用于从Java应用程序中訪问名称和文件夹服务的一组API。命名服务即将名称与对象相关联。以便能通过对应名称訪问这些对象。而文件夹服务即其对象具有属性及名称的命名服务。
命名或文件夹服务同意您集中管理共享信息的存储,这在网络应用程序中非常重要,由于它能够使这类应用程序更加一致和易于管理。比如,能够将打印机配置存储在文件夹服务中,这样全部与打印机相关的应用程序都能够使用它。
作用
J2EE 规范要求全部 J2EE 容器都要提供 JNDI 规范的实现。JNDI 在 J2EE中的角色就是“交换机” —— J2EE 组件在执行时间接地查找其它组件、资源或服务的通用机制。
在多数情况下,提供 JNDI供应者的容器能够充当有限的数据存储。这样管理员就能够设置应用程序的执行属性,并让其它应用程序引用这些属性(Java 管理扩展(Java Management Extensions,JMX)也能够用作这个目的)。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就能够发现所须要的资源。而不用了解这些间接性。
在 J2EE 中。JNDI 是把 J2EE 应用程序合在一起的粘合剂,JNDI提供的间接寻址同意跨企业交付可伸缩的、功能强大且非常灵活的应用程序。这是 J2EE 的承诺。并且经过一些计划和预先考虑,这个承诺是全然能够实现的。
PS:JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。
架构
JNDI架构提供了一个标准的、与命名系统无关的API,这个API构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来。因此不管应用程序是訪问LDAP、RMI、DNS还是其它的文件夹服务,这都没有关系。
换句话说,JNDI与不论什么特定的文件夹服务实现无关。您能够使用不论什么文件夹,仅仅要您拥有对应的服务提供程序接口(或驱动程序)就可以,如图下图所看到的。
注意,关于JNDI有一点非常重要,即它同一时候提供应用程序编程接口(Application Programming Interface ,API)和服务提供程序接口(Service Provider Interface 。SPI)。这样做的实际意义在于,对于您的与命名或文件夹服务交互的应用程序来说。必须存在用于该服务的一个JNDI服务提供程序,这便是JNDI SPI发挥作用的舞台。一个服务提供程序基本上就是一组类,这些类针对特定的命名和文件夹服务实现了各种JNDI接口——这与JDBC驱动程序针对特定的数据系统实现各种JDBC接口极为类似。作为一名应用程序开发者。您不须要操心JNDI SPI.。
您仅仅需确保。您为每一个想使用的命名或文件夹服务提供了一个服务提供程序。
总结
1、JNDI 提出的目的是为了解藕。是为了开发更加easy维护。easy扩展,easy部署的应用。
2、JNDI 是一个sun提出的一个规范(类似于jdbc),详细的实现是各个j2ee容器提供商,sun 仅仅是要求。j2ee容器必须有JNDI这种功能。
3、JNDI 在j2ee系统中的角色是“交换机”,是J2EE组件在执行时间接地查找其它组件、资源或服务的通用机制。4、JNDI 是通过资源的名字来查找的,资源的名字在整个j2ee应用中(j2ee容器中)是唯一的。
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
Java学习——何为JNDI的更多相关文章
- Java学习路线图,专为新手定制的Java学习计划建议
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...
- 关于JAVA学习计划和感想
学习计划第一阶段: JAVA语言基础知识.包括异常.IO流.多线程.集合类. 要求:异常------掌握try-catch-finally的使用 IO流------掌握字 ...
- 转:Java学习路线图,专为新手定制的Java学习计划建议
转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...
- 转:Java学习路线图
作者: nuanyangyang 标 题: Java学习路线图(整理中,欢迎纠正) 发信站: 北邮人论坛 (Mon Aug 11 19:28:16 2014), 站内 [以下肯定是不完整的列表, ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 新手如何学习java(java学习建议路线图)
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA). ...
- java学习书籍推荐
1. Java 语言基础 谈到Java 语言基础学习的书籍,大家肯定会推荐Bruce Eckel 的<Thinking in Java >.它是一本写的相当深刻的技术书籍,Java 语言基 ...
- Java学习路线图,Java学习计划建议
怎么学习Java,这是很多新手经常遇到的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...
- Java学习之路(转)
Java学习之路(书籍推荐) 一.基础类 1.<Thinking in java>(阅读2遍),入门第一位是建立正确的概念 2.<Core Java>这本书更贴近实践,更多 ...
随机推荐
- kinect for windows - 初认识
kinect是微软开发的一种计算机输入设备,原来只是用于xbox,kinect负责捕捉用户的动作,让xbox游戏做出相应的反应.很快大家对此非常有兴趣,因此有些geek和组织为kinect开发了驱动和 ...
- fedora 下安装 文泉驿正黑体
1. 可以到文泉驿正黑体的 主页 http://wenq.org/wqy2/index.cgi?%E9%A6%96%E9%A1%B5 最好能去官网表示一下支持 2. 也可以直接使用命令 : sudo ...
- BZOJ 1087
var f:..,..,..] of int64; a:Array[..] of longint; count:..] of longint; ans:int64; n,m:longint; proc ...
- Binary Tree(二叉树+思维)
Binary Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用
本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 提到“导演”一词,想必读者最先联想到的是电影.作为娱乐产 ...
- The Hungarian algorithm Template
The Hungarian algorithm with The adjacency matrix : 计算最大匹配问题 int n1, n2, m, ans; int res[MAXN]; bool ...
- django email用法
在settings里面设置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_PORT = 25EMAIL_HOST ...
- (csdn高校俱乐部编程挑战)2的补码
题目详情 在计算机中,整数是以2的补码的形式给出的. 给出整数A和B,如果计算机是32位机.求从A到B之间的全部二进制数中,一共用了多少个1. 输入格式: 多组数据,每组数据一行,由两个整数A,B, ...
- Objective-C KVC 自己主动转换类型研究
## Objective-C KVC 自己主动转换类型研究 apple非常厚道,kvc的时候帮我们做了一些类型转换,规律贴出来,给大伙參考參考 @interface Entity : NSObject ...
- PrintDocument组件打印
运行效果: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...