分享
 
 
 

用JNDI建立支持目录的应用程序

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Java Naming and Directory Interface (JNDI)是J2EE平台的一个主要产品并且支持Enterprise JavaBeans(EJB)。JNDI可以无缝连接不同种类的企业命名和目录服务。程序员们能够使用JNDI建立轻便的目录支持应用程序。让我们来看看它的工作原理以及开始使用它所必需的代码。

名字命名

几乎所有计算平台都要依靠某种标准化的命名系统来查找、获取以及存储资源。例如,文件系统靠的是文件和目录名,目录服务靠的是对象名,而DNS系统依靠URL――你就是靠它找到本文的。

大多数的命名系统使用某种能避免名字冲突的与法。例如,观察图A中的文件系统目录结构。

图 A

目录结构示例

你也许会注意到图A中有一些文件的名字是相同的(File 1和File 2)。当试图引用其中一个文件时这会造成很多麻烦。但是,如果每个文件被引用的时候都包括了其父目录,那问题就解决了。为了示范,我们假设命名语法使用一个UNIX式的分隔符。用完整路径名来引用每个名为File 1的文件应该使用如下的语法:

/Root/Directory 2/Directory 2.2.1/File 1

/Root/Directory 2/Directory 2.2.2/File 1

注意每个文件的完整路径都是唯一的。这就保证了操作系统能够正确地对一个文件进行操作,而不必担心会与其它文件发生冲突。提供这种对对象上下文便捷引用的环境被称为命名空间

JNDI介绍

Java Naming and Directory Interface是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。

JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。

JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。

JNDI的运转

让我们来看看JNDI是如何使用上下文的。首先,建立一个初始上下文。这仅仅是一个可以操纵的起始点。然后,浏览初始上下文中存在的对象、添加、删除对象、在父上下文和子上下文之间来回切换等等。清单A 中的例子示范了如何在文件系统的根目录下建立一个初始上下文并且列出这个上下文的所有对象(文件和目录)。我们用到了Sun提供的file system provider。

在清单B 中,你会看到如何为一个共用LDAP服务器建立一个初始LDAP上下文并浏览它的对象。

正如例子中所示,每个命名空间都能用相同的方式浏览。代码中唯一的不同是提供者的URL属性。这正是JNDI的关键――为不同的命名空间提供抽象层,这样就拥有了用相同的代码来操作它们的能力。你必须深入研究某个service provider的特殊实现才能找到许多操作的不同。

清单C少许改动了一些代码在初始上下文中进行一次查找,以找到指定的子上下文。我们先在文件系统provider上执行这个查找。

清单D 为一个共用LDAP服务器建立了一个初始LDAP上下文并浏览其对象。

你又可以看见代码对于不同的provider的一致性。需要改动的只是指定的子上下文的名字。

使用JNDI

Java 2 SDK 1.3版加入了JNDI。如果使用的是1.1或1.2版,可以下载并作为JDK的标准扩展来安装。还必须为想要使用的特定的命名空间安装service provider,比如LDAP、文件系统或RMI。这些service provider可以从Sun的JNDI Web 站点下载或从SPI的供应商那里得到。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有