一、JNDI简介
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是命名服务的一种自然扩展。两者之间的关键差别是目录服务中对象不但可以有名称还可以有属性(例如,用户有email地址),而命名服务中对象没有属性。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
二、JNDI认识
初见JNDI ,真的是不知道他是个什么东西,因为他的词汇的英文全称也是比较晦涩的,不好明白,稍加查阅后才发现里面技术点还真的是没有接触过的,是JAVA特有的企业开发的一种目录服务,因为里面的接口是双向的,所以无论是面向需要被访问的资源还是调用资源的程序,JNDI都是一个中介者的一个角色。
举个例子,这个JNDI就像是网络中的路由器,他们在自己那里都会有一个路由表,从哪里到哪里需要什么样的路径是都知道的。然后由一个请求到另外的一个文件或者一个文件从一个位置传到他想要的地方都是很有套路的,他都知道应该怎么去做,因为整个路径的表都存在他那里。
另外一个方面,目录服务不仅有名称,还可以有属性,这一点让很多的应用是不能比拟的,因为里面属性的携带为很多的应用提供了接口以外的很多作用。
三、JNDI的使用
像J2EE应用程序,J2SE应用程序可以使用JNDI作为命名的配置参数,对象和对象工厂的共享存储库。工厂创建模式中使用JNDI非常合适,因为你可以存储你的工厂在JNDI名称空间。J2SE应用程序也可以使用JNDI作为一个更强大,功能丰富,并集中更换为RMI(远程方法调用)。
大多数J2SE应用程序的配置文件,这些文件存储无论是作为属性文件或XML文档加载其配置信息。这些配置文件中指定的各种配置信息; 一些更复杂的应用程序存储信息的实例化对象,如类名和构造函数的参数,在配置文件中。
使用JNDI来存储常量,对象和对象工厂相对于传统的配置机制有些优势。由于大多数的JNDI提供者是网络访问的,你不需要保持一个组配置文件一致的每个主机在分布式应用程序。此外,使用反射来实例化一个对象时,需要更多的代码(尤其是更多的错误恢复代码)不能简单地检索出该对象JNDI名称空间中。虽然使用JNDI一般无须从配置信息实例化一个对象(当你填入的命名空间,一般在应用程序启动时),这种复杂性被分解远离大多数的应用程序代码,它可以简单地从JNDI名称空间检索所需的对象。
大多数J2SE应用程序的配置文件,这些文件存储无论是作为属性文件或XML文档加载其配置信息。这些配置文件中指定的各种配置信息; 一些更复杂的应用程序存储信息的实例化对象,如类名和构造函数的参数,在配置文件中。
使用JNDI来存储常量,对象和对象工厂相对于传统的配置机制有些优势。由于大多数的JNDI提供者是网络访问的,你不需要保持一个组配置文件一致的每个主机在分布式应用程序。此外,使用反射来实例化一个对象时,需要更多的代码(尤其是更多的错误恢复代码)不能简单地检索出该对象JNDI名称空间中。虽然使用JNDI一般无须从配置信息实例化一个对象(当你填入的命名空间,一般在应用程序启动时),这种复杂性被分解远离大多数的应用程序代码,它可以简单地从JNDI名称空间检索所需的对象。
由于小编也是刚刚接触JNDI,所以也不是特别了解,先讲到这里。