Module  java.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 documentation中找到。
从以下版本开始:
1.3