1. 什么是JNDI?
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。
对于JNDI的概念不少同学表示,一看就觉得头疼,根本没有想耐下心看的兴趣。为此,博主将上面复杂的概念拆分成一些简单的概念要点,帮助大家更好地理解JNDI的概念:
- JNDI本质上是一系列通用的,标准的用来操作命名服务和目录服务的接口: 换句话说,这一系列的接口就是对操作所有命名服务和目录服务的一种超级抽象,有了这些接口我们就可以用通用的接口操作各式各样的命名服务或者是目录服务,而不需要每次与一种服务交互就写一次操作该服务的代码,始终记住一个宗旨,以抽象应对改变。
- JNDI的这些通用接口需要依靠服务供应接口(SPI)的实现来将通用的接口映射为特定的命名或目录服务,使客户端能够和指定的服务进行交互:这句话的意思就是尽管虽然提供了一系列超级抽象版的通用接口API供客户端使用,但是使用这些接口的人该怎么知道用这些接口是在访问一个文件目录服务还是一个DNS命名服务呢?因此JNDI又提供了一系列的服务提供者接口(SPI),所有的服务供应商只要根据这些SPI去提供自己服务的实现,客户在使用通用接口时引入这些SPI的实现类,就可以操作指定的服务了。
2. 命名服务与目录服务
JNDI的目的就是对命名服务(Naming Service)与目录服务(Directory)中的资源进行查找或者管理,那么什么是命名服务,什么又是目录服务呢?
命名服务的概念其实很好理解,在生活中也有很多的例子,最典型的就是DNS(Domain Naming Service)了。众所周知,DNS是用来对人类