Module java.naming

Package javax.naming


package javax.naming
提供了访问命名服务的类和接口。

此包定义了Java命名和目录接口(JNDI)的命名操作。  JNDI为使用Java编程语言编写的应用程序提供命名和目录功能。它被设计为独立于任何特定的命名或目录服务实现。因此,各种服务--新的、新兴的和已部署的服务--可以以通用方式访问。

上下文

此包定义了一个上下文的概念,由Context接口表示。上下文由一组名称到对象的绑定组成。 Context是查找、绑定、解绑和重命名对象的核心接口,也用于创建和销毁子上下文。

lookup()是最常用的操作。您向lookup()提供要查找的对象的名称,它将返回绑定到该名称的对象。例如,以下代码片段查找打印机并将文档发送到打印机对象进行打印:

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

名称

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

接受Name的重载对需要操作名称的应用程序很有用:组合名称、比较组件等。接受字符串名称的重载对于简单的应用程序可能更有用,例如只需读取名称并查找相应对象的应用程序。

绑定

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

Binding类实际上是NameClassPair的子类,NameClassPair只包含对象的名称和对象的类名称。当您只想要有关对象类的信息而不想付出获取对象的额外成本时,NameClassPair是有用的。

引用

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

初始上下文

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

异常

JNDI为在执行命名和目录操作过程中可能抛出的异常定义了一个类层次结构。这个类层次结构的根是NamingException。对于对特定异常感兴趣的程序,可以捕获异常的相应子类。否则,程序应该捕获NamingException

包规范

JNDI API规范和相关文档可以在JNDI文档中找到。
自版本:
1.3
  • Class
    Description
    在访问命名或目录服务时发生身份验证错误时抛出此异常。
    当请求的特定身份验证类型不受支持时抛出此异常。
    代表通信端点的地址的二进制形式的类。
    在上下文中找到的名称到对象绑定的类。
    当操作达到名称中无法继续的点时抛出此异常。
    当客户端无法与目录或命名服务通信时抛出此异常。
    代表复合名称--跨多个命名空间的组件名称序列的类。
    代表复合名称--来自分层名称空间的名称的类。
    遇到配置问题时抛出此异常。
    表示命名上下文的接口,它由一组名称到对象绑定组成。
    尝试销毁非空上下文时抛出此异常。
    用于执行命名操作的起始上下文的类。
    当资源不足以完成请求的操作时抛出此异常。
    调用的命名操作被中断时抛出此异常。
    指定的名称不符合命名系统的命名语法时抛出此异常。
    当方法由于用户或系统指定的限制而异常终止时抛出此异常。
    用于描述在解析链接时遇到的问题的异常。
    尝试解析链接时检测到循环,或者已达到链接计数的实现特定限制时抛出此异常。
    代表绑定到上下文中原子名称的名称的引用的类。
    在解析或构造链接时遇到格式错误时抛出此异常。
    Name接口表示通用名称--一系列组件的有序序列。
    通过方法抛出此异常,以指示无法添加绑定,因为名称已绑定到另一个对象。
    表示在上下文中找到的绑定的对象名称和类名称对的类。
    由于未绑定名称,无法解析名称的组件时抛出此异常。
    用于从分层命名空间中解析名称的接口。
    用于枚举由javax.naming和javax.naming.directory包中的方法返回的列表的接口。
    在Context和DirContext接口中的操作抛出的所有异常的超类。
    在Context和DirContext接口中的与安全相关的操作抛出的异常的超类。
    无法创建初始上下文实现时抛出此异常。
    尝试执行客户端没有权限的操作时抛出此异常。
    当命名操作继续到需要上下文才能继续操作的点,但已解析的对象不是上下文时抛出此异常。
    当上下文实现不支持调用的操作时抛出此异常。
    表示返回或迄今为止返回的结果是部分的,并且无法完成操作的异常。
    代表通信端点的地址的类。
    代表在命名/目录系统之外找到的对象的引用的类。
    由可以为自身提供引用的对象实现的接口。
    用于表示引用异常的抽象类,该异常是响应于LDAP v3服务器返回的引用而生成的。
    尝试与目录或命名服务通信,但该服务不可用时抛出此异常。
    当方法产生超过与大小相关的限制的结果时抛出此异常。
    代表通信端点的地址的字符串形式的类。
    当方法未在指定的时间限制内终止时抛出此异常。