javax.naming

接口
异常
为访问命名服务提供类和接口。

请参见:
          描述

接口摘要
Context 此接口表示一个命名上下文,它由一组名称到对象的绑定组成。
Name Name 接口表示一个一般名称,即一个有序的组件序列。
NameParser 此接口用于解析取自分层的名称空间的名称。
NamingEnumeration<T> 此接口用于枚举 javax.naming 和 javax.naming.directory 包中的方法所返回的列表。
Referenceable 此接口由可以为自身提供 Reference 的对象实现。
 

类摘要
BinaryRefAddr 此类表示通信终端地址的二进制形式。
Binding 此类表示上下文中一个名称到对象的绑定。
CompositeName 此类表示一个复合名称,即一个跨多个名称空间组件名称的序列。
CompoundName 此类表示一个组合名称,即一个取自层次名称空间的名称。
InitialContext 此类是执行命名操作的初始上下文。
LinkRef 此类表示一个 Reference,其内容是绑定到上下文中的原子名称的一个名称,称为链接名称 (link name)。
NameClassPair 此类表示存在于上下文中的某一绑定的对象名称和类名称对。
RefAddr 此类表示通信端点的地址。
Reference 此类表示对存在于命名/目录系统以外的对象的引用。
StringRefAddr 此类表示通信终端地址的字符串形式。
 

异常摘要
AuthenticationException 当访问命名或目录服务发生验证错误时,抛出此异常。
AuthenticationNotSupportedException 当所请求验证的特定 flavor 不受支持时,抛出此异常。
CannotProceedException 抛出此异常指示操作到达了名称中的某一点,在该点上操作无法继续进行。
CommunicationException 当客户端无法与目录或命名服务通信时,抛出此异常。
ConfigurationException 当存在配置问题时,抛出此异常。
ContextNotEmptyException 当试图销毁一个不为空的上下文时,抛出此异常。
InsufficientResourcesException 当无法使用资源完成所请求的操作时,抛出此异常。
InterruptedNamingException 当正被调用的命名操作已经被中断时,抛出此异常。
InvalidNameException 此异常指示被指定的名称不符合命名系统的命名语法。
LimitExceededException 当某一方法因为用户或系统指定的限制而异常终止时,抛出此异常。
LinkException 此异常用于描述解析链接时遇到的问题。
LinkLoopException 当检测到的某个循环试图解析某一链接,或者已达到某一特定于实现的链接计数限制时,抛出此异常。
MalformedLinkException 如果在解析或构造链接时遇到错误链接,则抛出此异常。
NameAlreadyBoundException 一些方法抛出此异常来指示因为名称已经绑定到另一个对象而无法添加某一绑定。
NameNotFoundException 当名称的组件由于没有被绑定而无法解析时,抛出此异常。
NamingException 此异常是 Context 和 DirContext 接口中的操作抛出的所有异常的超类。
NamingSecurityException 此异常是 Context 和 DirContext 接口中的操作所抛出的与安全有关的异常的超类。
NoInitialContextException 当不能创建任何初始上下文实现时,抛出此异常。
NoPermissionException 当试图执行某一操作,而客户端没有执行该操作的权限时,抛出此异常。
NotContextException 当命名操作进行到需要上下文来继续该操作的某处,而解析的对象不是一个上下文时,抛出此异常。
OperationNotSupportedException 当上下文实现不支持将调用的操作时,抛出此异常。
PartialResultException 抛出此异常指示结果正在返回或者到目前为止只返回了部分结果,并且操作无法完成。
ReferralException 此抽象类用于表示一个引用异常,该异常是在响应某一引用(比如 LDAP v3 服务器返回的引用)时生成的。
ServiceUnavailableException 当试图与目录或命名服务通信,而该服务不可用时,抛出此异常。
SizeLimitExceededException 当某一方法生成的结果超出与大小有关的限制时,抛出此异常。
TimeLimitExceededException 当某一方法没有在指定的时间限制内终止时,抛出此异常。
 

软件包 javax.naming 的描述

为访问命名服务提供类和接口。

此包定义 Java Naming and Directory InterfaceTM (JNDI) 的命名操作。  JNDI 向使用 Java 编程语言编写的应用程序提供命名和目录功能。它被设计成与任何特定的命名或目录服务实现无关。因此可以使用共同的方式对多种服务(新的、新出现的及已经部署的服务)进行访问。

上下文

此包定义上下文 的概念,由 Context 结构表示。上下文由一组名称到对象的绑定 组成。Context 是用来查找、绑定、取消绑定和重新命名对象,以及创建和销毁子上下文的核心接口。

lookup() 是最常使用的操作。当向 lookup() 提供想要查询的对象的名称时,它将返回绑定到该名称的对象。例如,以下代码段要查找一台打印机并将文档发送给该打印机对象打印:

Printer printer = (Printer)ctx.lookup("treekiller");
printer.print(report);

名称

Context 接口中的每个命名方法都有两个重载形式:一个接受 Name 参数,另一个接受字符串名称。Name 是一个表示一般名称的接口,一般名称是零个或多个组件的有序序列。对于这些方法,可以使用 Name 表示复合名称 (CompositeName),从而可以使用跨多个名称空间的名称来命名一个对象。

接受 Name 的重载方法对那些需要对名称进行以下操作的应用程序很有用:组合名称、比较组件等等。接受字符串名称的重载方法对那些简单的应用程序可能更加有用,比如那些只是读取某一名称以及查找相应对象的应用程序。

绑定

Binding 类表示一个名称到对象的绑定。它是一个包含所绑定对象的名称、对象的类的名称和对象本身的元组 (tuple)。

Binding 类实际上是 NameClassPair 的子类,由对象的名称和对象的类名称组成。在只想要关于对象的类的信息以及不想为获得对象而额外开销时,NameClassPair 很有用。

引用

对象以不同方式存储在命名和目录服务中。如果对象存储支持存储 Java 对象,则它可能支持以序列化形式存储对象。不过,一些命名和目录服务不支持存储 Java 对象。此外,对于目录中某些对象而言,Java 程序只是访问它们的一组应用程序。在这种情况下,序列化 Java 对象可能不是最合适的表示形式。JNDI 定义了一个由 Reference 类表示的 引用,它包含有关如何构造对象副本的信息。JNDI 将尝试把从目录中找到的引用转换成它们表示的 Java 对象,从而给 JNDI 客户端制造一种目录中存储的是 Java 对象的假象。

初始上下文

在 JNDI 中,所有命名和目录操作都是相对于上下文执行的。没有绝对的根。所以 JNDI 定义了一个 初始上下文 InitialContext,为命名和目录操作提供起始点。一旦有了初始上下文,就可以使用它来查找其他上下文和对象。

异常

JNDI 为可能在执行命名和目录操作期间抛出的异常定义了一个类层次。此类层次的根是 NamingException。需要处理特定异常的程序可以捕获相应的异常子类。否则,这些程序应该捕获 NamingException

包规范

JNDI API 规范及相关文档可在 JNDI documentation 中找到。

从以下版本开始:
1.3