模块 java.naming
包 javax.naming
包javax.naming
提供访问命名服务的类和接口。
这个包定义了 Java 命名和目录接口 (JNDI) 的命名操作。 JNDI 为用 Java 编程语言编写的应用程序提供命名和目录功能。它旨在独立于任何特定的命名或目录服务实现。因此,可以以通用方式访问各种服务——新的、新兴的和已经部署的服务。
Context
这个包定义了 context 的概念,由 Context
接口表示。上下文由一组名称到对象 bindings 组成。 Context
是查找、绑定、解除绑定和重命名对象以及创建和销毁子上下文的核心接口。
lookup()
是最常用的操作。您提供 lookup()
您要查找的对象的名称,它返回绑定到该名称的对象。例如,以下代码片段查找打印机并将文档发送到要打印的打印机对象:
Printer printer = (Printer)ctx.lookup("treekiller"); printer.print(report);
名称
Context
接口中的每个命名方法都有两个重载:一个接受 Name
参数,一个接受字符串名称。 Name
是一个表示通用名称的接口——零个或多个组件的有序序列。对于这些方法,Name
可用于表示 composite name (CompositeName
),以便您可以使用跨越多个命名空间的名称来命名对象。
接受 Name
的重载对于需要操作名称的应用程序很有用:组合名称、比较组件等。接受字符串名称的重载可能对简单的应用程序更有用,例如那些只读入名称并查找相应对象的应用程序。
Bindings
Binding
类表示名称到对象的绑定。它是一个包含绑定对象名称、对象类名称和对象本身的元组。
Binding
类实际上是 NameClassPair
的子类,它仅由对象的名称和对象的类名组成。 NameClassPair
在您只需要有关对象类的信息并且不想支付获取对象的额外费用时很有用。
参考
对象以不同的方式存储在命名和目录服务中。如果对象存储支持存储 Java 对象,它可能支持以序列化形式存储对象。但是,一些命名和目录服务不支持 Java 对象的存储。此外,对于目录中的某些对象,Java 程序只是访问它们的一组应用程序。在这种情况下,序列化的 Java 对象可能不是最合适的表示。 JNDI 定义了一个 reference ,由Reference
类表示,其中包含有关如何构造对象副本的信息。 JNDI 会尝试将从目录中查找到的引用转换为它们所代表的 Java 对象,从而使 JNDI 客户端产生目录中存储的是 Java 对象的错觉。
初始上下文
在 JNDI 中,所有命名和目录操作都是相对于上下文执行的。没有绝对的根源。因此 JNDI 定义了一个 initial context 、InitialContext
,它们为命名和目录操作提供了一个起点。一旦有了初始上下文,就可以使用它来查找其他上下文和对象。
异常
JNDI 为在执行命名和目录操作过程中可能抛出的异常定义了类层次结构。这个类层次结构的根是NamingException
。对处理特定异常感兴趣的程序可以捕获该异常的相应子类。否则,程序应该捕获 NamingException
。
包装规格
JNDI API 规范和相关文档可以在 JNDI 文档 中找到。- 自从:
- 1.3
-
类描述当访问命名或目录服务时发生身份验证错误时抛出此异常。当不支持所请求的特定身份验证风格时,将抛出此异常。此类表示通信端点地址的二进制形式。此类表示在上下文中找到的名称到对象的绑定。抛出此异常表示操作已到达名称中的某个点,在此操作无法继续进行。当客户端无法与目录或命名服务通信时抛出此异常。此类表示一个复合名称——一系列跨越多个名称空间的组件名称。此类表示复合名称——来自分层名称空间的名称。当存在配置问题时抛出此异常。这个接口代表一个命名上下文,它由一组名称到对象的绑定组成。试图销毁非空的上下文时抛出此异常。此类是执行命名操作的起始上下文。当资源不可用于完成请求的操作时,将抛出此异常。当正在调用的命名操作被中断时抛出此异常。此异常表明指定的名称不符合命名系统的命名语法。当方法由于用户或系统指定的限制而异常终止时,将抛出此异常。此异常用于描述解析链接时遇到的问题。如果在尝试解析链接时检测到循环,或者已达到链接计数的实现特定限制,则会抛出此异常。此类表示一个引用,其内容是一个名称,称为链接名称,它绑定到上下文中的原子名称。在解析或构建链接时遇到格式错误的链接时会抛出此异常。
Name
接口代表一个通用名称——一个有序的组件序列。方法抛出此异常以指示无法添加绑定,因为该名称已绑定到另一个对象。此类表示在上下文中找到的绑定的对象名和类名对。当 name 的某个组件由于未绑定而无法解析时,将抛出此异常。此接口用于解析来自分层命名空间的名称。此接口用于枚举 javax.naming 和 javax.naming.directory 包中的方法返回的列表。这是 Context 和 DirContext 接口中的操作抛出的所有异常的超类。这是由 Context 和 DirContext 接口中的操作抛出的与安全相关的异常的超类。当无法创建初始上下文实现时抛出此异常。尝试执行客户端没有权限的操作时抛出此异常。当命名操作进行到需要上下文才能继续操作但解析的对象不是上下文时,将抛出此异常。当上下文实现不支持被调用的操作时抛出此异常。抛出该异常表示目前正在返回或返回的结果是部分的,操作无法完成。此类表示通信端点的地址。此类表示对在命名/目录系统之外找到的对象的引用。该接口由一个对象实现,该对象可以提供对自身的引用。此抽象类用于表示引用异常,它是为响应 referral 而生成的,例如 LDAP v3 服务返回的异常。当尝试与目录或命名服务通信并且该服务不可用时会抛出此异常。当方法产生的结果超过与大小相关的限制时,将抛出此异常。此类表示通信端点地址的字符串形式。当方法没有在指定的时间限制内终止时抛出此异常。