JNDI和Java RMI远程调用(二)

利用 JNDI 定位资源

JNDI 提供了一套标准的接口来定位资源 ( 用户、网络、机器、对象和服务等 ) ,比如可以利用 JNDI 在局域网上定位一台打印机,也可以用 JNDI 来定位数据库服务或一个远程 Java 对象。 JNDI Java EE 中使用十分广泛;包括 EJB RMI-IIOP JDBC JMS 等。这些技术都需要命名和目录服务的支持。

命名和给人取名字道理是一样的,名字是一个指向实际客体的引用,名字方便了我们指称物体,比如给一个打印机取名为“ PrinterA ”,就不需要描述它为“五楼转角右边数过来的第二个打印机”。给一个资源命名的过程叫做名字的绑定。命名绑定之后,一系列的资源就有一系列的名字,名字属于命名空间,比如所有的本市的电话号码都在号码薄上,我们就可以在这个空间里寻找所要的资源。

给所有的资源命名之后,我们可以想象成所有人的电话号码都输入了号码薄,接下来利用这个号码薄就可以查找具体某人的联系方式。通过号码薄查找的服务就是目录服务。所以,总体来说, JNDI 提供了以下两种功能:

将名字绑定到资源上。

通过名字查找资源。

JDNI 由两部分组成:客户端 API 和服务提供接口 SPI(Service Provider Interface).

客户端 API 为开发者提供了操作命名和目录服务的统一接口,程序员可以利用这些 API ,在各种服务协议之上,对资源进行命名,或在目录中查找资源等。客户端 API 是与服务的协议无关的,而这个协议的具体实现由 SPI 组成。

JDNI SPI JNDI 的实现框架,对各个命名和目录服务协议进行支持。各个目录协议可以通过 SPI 将其插入到 JDNI 中。

JNDI 给一个字资源命名,并通过这个名字查找资源,那么资源的命名有什么规则呢? JNDI 中的名字可以分成两种:原子名和组合名。组合名是由原子名组成的,比如在 A 下的打印机 Printer1 就被表示成了“ A\Printer 1 其中 A\Printer 1 组合名它是 A ”和“ Printer 1 两个原子组成通过组合名可以找到经过绑定之后资源

命名服务提供了一种为对象命名的机制,这样就可以无需知道对象位置的情况下获取和使用对象。只要给对象在命名服务器上注册过,且命名服务器的地址和该对象在命名服务器上注册的 JNDI 名已知。就可以找到该对象,获得其引用,从而运用它提供的服务。

利用 JNDI 可以寻找命名服务器上注册过的所有对象。

JNDI 架构提供了一个标准的、与命名系统无关的 API ,这个 API 构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问任何目录服务,这都没有关系。换句话说, JNDI 与任何特定的目录服务实现无关,可以使用任何目录,只要拥有相应的服务提供程序接口。

JNDI 可以运用在很多 JAVA EE技术上,比如在 JDBC EJB

下面一节讲述了一个分布式的 HelloWorld 的例子

你可能感兴趣的:(java,应用服务器,网络协议,网络应用,ejb)