服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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

 

java naming and directory interface (jndi)是j2ee平台的一个主要产品并且支持enterprise javabeans(ejb)。jndi可以无缝连接不同种类的企业命名和目录服务。程序员们能够使用jndi建立轻便的目录支持应用程序。让我们来看看它的工作原理以及开始使用它所必需的代码。

名字命名

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

大多数的命名系统使用某种能避免名字冲突的与法。
当试图引用其中一个文件时这会造成很多麻烦。但是,如果每个文件被引用的时候都包括了其父目录,那问题就解决了。为了示范,我们假设命名语法使用一个unix式的分隔符。用完整路径名来引用每个名为file 1的文件应该使用如下的语法:

/root/directory 2/directory 2.2.1/file 1

/root/directory 2/directory 2.2.2/file 1

注意每个文件的完整路径都是唯一的。这就保证了操作系统能够正确地对一个文件进行操作,而不必担心会与其它文件发生冲突。提供这种对对象上下文便捷引用的环境被称为命名空间
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
java 2 sdk 1.3版加入了jndi。如果使用的是1.1或1.2版,可以下载并作为jdk的标准扩展来安装。还必须为想要使用的特定的命名空间安装service provider,比如ldap、文件系统或rmi。这些service provider可以从sun的jndi web站点下载或从spi的供应商那里得到。

扫描关注微信公众号