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
-
接口摘要 接口 描述 Context 该接口表示一个命名上下文,它由一组名称对对象绑定组成。Name Name
接口表示通用名称 - 组件的有序序列。NameParser 此接口用于从分层命名空间中解析名称。NamingEnumeration<T> 此接口用于枚举javax.naming和javax.naming.directory包中的方法返回的列表。Referenceable 该接口由可以为其自身提供引用的对象实现。 -
类摘要 Class 描述 BinaryRefAddr 该类表示通信端点的地址的二进制形式。Binding 此类表示在上下文中找到的名称对对象绑定。CompositeName 此类表示组合名称 - 跨多个命名空间的组件名称序列。CompoundName 该类表示复合名称 - 来自分层名称空间的名称。InitialContext 这个类是执行命名操作的起始上下文。LinkRef 此类表示一个引用,其内容是名称,称为链接名称,该名称绑定到上下文中的原子名称。NameClassPair 此类表示在上下文中找到的绑定的对象名称和类名称对。RefAddr 该类表示通信端点的地址。Reference 此类表示对在命名/目录系统外部找到的对象的引用。StringRefAddr 此类表示通信端点的地址的字符串形式。 -
异常摘要 异常 描述 AuthenticationException 访问命名或目录服务时发生身份验证错误时抛出此异常。AuthenticationNotSupportedException 当不支持所请求的身份验证的特定风格时,会抛出此异常。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 当方法不在指定的时间限制内终止时,抛出此异常。