Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

关于 Java 命名和目录接口 (JNDI)

本节将讨论 Java 命名和目录接口 (JNDI)。JNDI 是用于访问不同种类的命名和目录服务的应用程序编程接口 (API)。J2EE 组件通过调用 JNDI 查找方法来定位对象。

本节包括以下主题:

JNDI 名称和资源

JNDI 是 Java 命名和 API 目录接口的首字母缩略词。通过对此 API 进行调用,应用程序可以定位资源和其他程序对象。资源是提供到系统(如数据库服务器和消息传送系统)的连接的程序对象。(JDBC 资源有时被称为数据源。)每个资源对象都是由唯一的友好名称所标识,称为 JNDI 名称。Application Server 附带的命名和目录服务将资源对象及其 JNDI 名称绑定在一起。要创建新资源,需要将新的名称-对象绑定输入到 JNDI 中。

J2EE 命名服务

JNDI 名称是便于用户使用的对象名称。这些名称通过 J2EE 服务器提供的命名和目录服务绑定到其对象。由于 J2EE 组件通过 JNDI API 访问此服务,因此对象通常使用其 JNDI 名称。例如,PointBase 数据库的 JNDI 名称为 jdbc/Pointbase。Application Server 启动时,将从配置文件读取信息,并自动将 JNDI 数据库名称添加到名称空间。

J2EE 应用程序客户机、企业 Bean 以及 Web 组件都需要具有权限,才能访问 JNDI 命名环境。

应用程序组件的命名环境是一种机制,使用它可以在部署或汇编期间自定义应用程序组件的商业逻辑。使用应用程序组件的环境即可对应用程序组件进行自定义,而无需访问或更改应用程序组件的源代码。

J2EE 容器实现 J2EE 应用程序组件的环境,并将该环境作为 JNDI 命名上下文提供给 J2EE 应用程序组件实例。J2EE 应用程序组件的环境的使用方式如下:

每个应用程序组件定义了其本身的环境项集合。一个应用程序组件在同一容器内的所有实例共享相同的环境项。不允许应用程序组件实例在运行时修改环境。

命名引用和绑定信息

资源引用是部署描述符中的一种元素,用于标识该资源的组件的编码名称。更具体地说,编码名称引用资源的连接工厂。在下节给出的示例中,资源引用名称为 jdbc/SavingsAccountDB

资源的 JNDI 名称和资源引用名称是不同的。使用此命名方法,您需要在进行部署之前先映射这两个名称,但此方法也用于将组件与资源分离开。由于具有此分离功能,因此如果组件在以后需要访问其他资源,则无需更改名称。这一灵活性使您可以更加容易地从先前存在的组件汇编 J2EE 应用程序。

下表列出了用于 Application Server 所使用的 J2EE 资源的 JNDI 查找及其关联的引用。

表 6–1 JNDI 查找及其关联的引用

JNDI 查找名称 

关联的引用 

java:comp/env

应用程序环境项 

java:comp/env/jdbc

JDBC 数据源资源管理器连接工厂 

java:comp/env/ejb

EJB 引用 

java:comp/UserTransaction

UserTransaction 引用 

java:comp/env/mail

JavaMail 会话连接工厂 

java:comp/env/url

URL 连接工厂 

java:comp/env/jms

JMS 连接工厂和目标 

java:comp/ORB

应用程序组件之间共享的 ORB 实例