JNDI的介绍:JNDI 是自 JDK1.3 版本开始绑定的标准 Java API。JNDI为各种现有的命名以及目录服务提供了通用接口:DNS、LDAP、活动目录(Active Directory)、RMI 注册器、COS 注册器、NIS 及文件系统。在结构上,JNDI 由两部分组成:客户 API 和服务提供商接口(Service Provider Intergace,SPI),应用程序通过客户 API 访问命名和目录服务;服务提供商接口用于供厂商创建命名和目录服务的 JNDI 实现。下面是 JNDI 的结构图:
EJB 开发者来说,只需要知道使用客户 API 如何访问命名和目录服务,不需要知道 JNDI SPI 的使用,不需要使用 JNDI SPI 开发 JNDI 实现产品,好比通过 JDBC 访问数据库,只需要知道使用 JDBC API 如何访问数据库,而不用知道数据库的 JDBC 驱动如何实现。使用客户 API 访问 EJB3.0,需要编写的 JNDI 代码不过是几行。
命名服务用于将名称与对象联系起来,使得我们可以用名称访问对象。例如,当你在 web 浏览器输入 URL:http://www.baidu.com 时,DNS(Domain Name System,域名系统)将这个域名转换成 IP 地址。目录服务是命名服务的自然扩展,在这种服务里,对象不但有名称,还有属性。与命名服务的关键差别是:目录服务中对象可以有属性(例如,用户有 email 地址),而命名服务中对象没有属性。