- 所有已知的子接口:
-
DirContext
,EventContext
,EventDirContext
,LdapContext
- 所有已知的实现类:
-
InitialContext
,InitialDirContext
,InitialLdapContext
名称
传递给Context
方法的每个名称都是相对于该上下文的。空名称用于命名上下文本身。名称参数永远不能为null。
大多数方法都有重载版本,其中一个使用Name
参数,另一个使用String
。这些重载版本是等效的,如果Name
和String
参数只是相同名称的不同表示,则相同方法的重载版本行为相同。在下面的方法描述中,只有一个版本被完全记录。第二个版本有一个链接指向第一个版本:相同的文档适用于两者。
对于支持联邦的系统,传递给Context
方法的String
名称参数是复合名称。作为CompositeName
实例的名称参数被视为复合名称,而不是CompositeName
或其他复合名称实现的实例的Name
参数被视为复合名称。这允许将NameParser.parse()
的结果用作Context
方法的参数。在JNDI 1.2之前,所有名称参数都被视为复合名称。
此外,对于支持联邦的系统,从list()
和listBindings()
返回的NamingEnumeration
中的所有名称都表示为字符串的复合名称。有关名称的字符串语法,请参阅CompositeName
。
对于不支持联邦的系统,名称参数(无论是Name
还是String
形式)和NamingEnumeration
中返回的名称可能是其自己命名空间中的名称,而不是复合命名空间中的名称,由服务提供商自行决定。
异常
该接口中的所有方法都可以抛出NamingException
或其任何子类。有关每个异常的详细信息,请参阅NamingException
及其子类。
并发访问
不能保证对上下文实例的并发访问是同步的。需要同时访问单个上下文实例的线程应该在它们之间同步并提供必要的锁定。每个操作不同上下文实例的多个线程不需要同步。请注意,当传递一个空名称时,lookup
方法将返回一个表示相同命名上下文的新上下文实例。
为了并发控制的目的,返回NamingEnumeration
的上下文操作在枚举仍在使用时或在该操作生成的任何引用仍在被跟踪时不被视为已完成。
参数
传递给Context
接口或其子接口的任何方法的Name
参数不会被服务提供商修改。服务提供商可能会在操作的持续时间内保留对它的引用,包括方法结果的任何枚举和生成的任何引用的处理。在此期间,调用者不应修改该对象。由任何此类方法返回的Name
由调用者拥有。调用者随后可以修改它;服务提供商不可以。
环境属性
JNDI应用程序需要一种方式来传达定义访问命名和目录服务的环境的各种首选项和属性。例如,一个上下文可能需要指定安全凭据才能访问服务。另一个上下文可能需要提供服务器配置信息。这些被称为上下文的环境。 Context
接口提供了用于检索和更新此环境的方法。
环境从父上下文继承,随着上下文方法从一个上下文到下一个上下文的进行。对一个上下文环境的更改不会直接影响其他上下文的环境。
环境属性何时使用和/或验证其有效性是依赖于实现的。例如,一些与安全相关的属性由服务提供商用于“登录”到目录。此登录过程可能发生在创建上下文时,或在第一次在上下文上调用方法时。何时以及是否发生这种情况是依赖于实现的。当从上下文中添加或删除环境属性时,验证更改的有效性再次取决于实现。例如,某些属性的验证可能发生在进行更改时,或在下次在上下文上执行操作时,或根本不进行。
任何具有对上下文的引用的对象都可以检查该上下文的环境。不应将诸如明文密码之类的敏感信息存储在那里,除非已知实现会保护它。
资源文件
为了简化JNDI应用程序所需的环境设置任务,应用程序组件和服务提供商可以与资源文件一起分发。 JNDI资源文件是以属性文件格式(请参阅java.util.Properties
)编写的文件,包含键/值对列表。键是属性的名称(例如“java.naming.factory.object”),值是为该属性定义的格式的字符串。以下是JNDI资源文件的示例:
java.naming.factory.object=com.sun.jndi.ldap.AttrsToCorba:com.wiz.from.Person java.naming.factory.state=com.sun.jndi.ldap.CorbaToAttrs:com.wiz.from.Person java.naming.factory.control=com.sun.jndi.ldap.ResponseControlFactory
JNDI类库读取资源文件并使属性值自由可用。因此,JNDI资源文件应被视为“全局可读”,不应在其中存储诸如明文密码之类的敏感信息。
有两种类型的JNDI资源文件:提供者和应用程序。
提供者资源文件
每个服务提供商都有一个可选资源,列出了特定于该提供商的属性。此资源的名称是:
[前缀/]jndiprovider.properties
其中前缀是提供商上下文实现的包名称,每个句点(“.”)转换为斜杠(“/”)。例如,假设服务提供商定义了一个具有类名com.sun.jndi.ldap.LdapCtx
的上下文实现。该提供商的资源命名为com/sun/jndi/ldap/jndiprovider.properties
。如果类不在包中,则资源的名称简单为jndiprovider.properties
。
JNDI类库中的某些方法使用指定JNDI工厂列表的标准JNDI属性:
- java.naming.factory.object
- java.naming.factory.state
- java.naming.factory.control
- java.naming.factory.url.pkgs
应用程序资源文件
当应用程序部署时,通常会有几个代码库目录和JAR文件在其类路径中。JNDI使用ClassLoader.getResources()
定位所有类路径中命名为jndi.properties
的应用程序资源文件。此外,如果Java安装目录包含内置属性文件,通常为conf/jndi.properties
,JNDI将其视为附加的应用程序资源文件。这些文件中包含的所有属性都将放入初始上下文的环境中。然后,此环境将被其他上下文继承。
对于在多个应用程序资源文件中找到的每个属性,JNDI使用找到的第一个值,或者在少数几种情况下,如果有意义的话,它会连接所有值(下面给出详细信息)。例如,如果在三个jndi.properties
资源文件中找到“java.naming.factory.object”属性,则对象工厂列表是来自所有三个文件的属性值的连接。使用此方案,每个可部署组件负责列出其导出的工厂。当搜索工厂类时,JNDI会自动收集和使用所有这些导出列表。
属性搜索算法
当JNDI构造初始上下文时,上下文的环境将使用传递给构造函数的环境参数中定义的属性,系统属性和应用程序资源文件进行初始化。有关详细信息,请参阅InitialContext
。然后,此初始环境将被其他上下文实例继承。
当JNDI需要确定属性的值时,它会按照以下两个来源的值的顺序合并值:
- 正在操作的上下文的环境。
- 正在操作的上下文的提供者资源文件(
jndiprovider.properties
)。
当服务提供商需要确定属性的值时,通常会直接从环境中获取该值。服务提供商可以定义特定于提供商的属性,以放置在其自己的提供者资源文件中。在这种情况下,它应按照前一段描述的方式合并值。
通过这种方式,每个服务提供商开发人员都可以指定要与该服务提供商一起使用的工厂列表。这些可以由应用程序资源指定的导出列表修改,然后由应用程序部署者修改,然后由用户修改。
- 自版本:
- 1.3
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
已弃用,将被移除:此API元素可能在将来的版本中被移除。在构造初始上下文时,将忽略具有此名称的环境属性。static final String
持有用于指定所请求服务的权威性的环境属性名称的常量。static final String
常量,保存通过服务协议返回数据时使用的批处理大小的环境属性的名称。static final String
常量,保存用于指定JNDI URL上下文中要使用的DNS主机和域名的环境属性的名称(例如,“dns://somehost/wiz.com”)。static final String
常量,保存要使用的初始上下文工厂的环境属性的名称。static final String
常量,保存要与服务一起使用的首选语言的环境属性的名称。static final String
常量,保存要使用的对象工厂列表的环境属性的名称。static final String
常量,保存要使用的服务提供程序的配置信息的环境属性的名称。static final String
常量,保存服务提供程序遇到的引用应如何处理的环境属性的名称。static final String
常量,保存要使用的安全级别的环境属性的名称。static final String
常量,保存用于对调用者进行身份验证的主体的凭据的环境属性的名称。static final String
常量,保存用于对调用者进行身份验证的主体的身份的环境属性的名称。static final String
常量,保存要使用的安全协议的环境属性的名称。static final String
常量,保存要使用的状态工厂列表的环境属性的名称。static final String
常量,保存在加载URL上下文工厂时要使用的包前缀列表的环境属性的名称。 -
Method Summary
Modifier and TypeMethodDescriptionaddToEnvironment
(String propName, Object propVal) 向此上下文的环境中添加新的环境属性。void
将名称绑定到对象。void
将名称绑定到对象。void
close()
关闭此上下文。composeName
(String name, String prefix) 将此上下文的名称与相对于此上下文的名称组合。composeName
(Name name, Name prefix) 将此上下文的名称与相对于此上下文的名称组合。createSubcontext
(String name) 创建并绑定新的上下文。createSubcontext
(Name name) 创建并绑定新的上下文。void
destroySubcontext
(String name) 销毁命名上下文并将其从命名空间中删除。void
destroySubcontext
(Name name) 销毁命名上下文并将其从命名空间中删除。Hashtable
<?, ?> 检索此上下文的有效环境。检索此上下文在其自己命名空间中的完整名称。getNameParser
(String name) 检索与命名上下文关联的解析器。getNameParser
(Name name) 检索与命名上下文关联的解析器。枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。listBindings
(String name) 枚举命名上下文中绑定的名称,以及绑定到它们的对象。listBindings
(Name name) 枚举命名上下文中绑定的名称,以及绑定到它们的对象。检索命名对象。检索命名对象。lookupLink
(String name) 检索命名对象,跟随链接,但不包括名称的终端原子组件。lookupLink
(Name name) 检索命名对象,跟随链接,但不包括名称的终端原子组件。void
将名称绑定到对象,覆盖任何现有绑定。void
将名称绑定到对象,覆盖任何现有绑定。removeFromEnvironment
(String propName) 从此上下文的环境中删除环境属性。void
将新名称绑定到绑定到旧名称的对象,并解除旧名称的绑定。void
将新名称绑定到绑定到旧名称的对象,并解除旧名称的绑定。void
解绑定命名对象。void
解绑定命名对象。
-
Field Details
-
INITIAL_CONTEXT_FACTORY
常量,保存要使用的初始上下文工厂的环境属性的名称。该属性的值应该是将创建初始上下文的工厂类的完全限定类名。此属性可以在传递给初始上下文构造函数的环境参数中指定,系统属性中指定,或者在应用程序资源文件中指定。如果未在这些来源中的任何一个中指定,则在需要初始上下文以完成操作时,将抛出NoInitialContextException
。此常量的值为“java.naming.factory.initial”。
- 参见:
-
OBJECT_FACTORIES
常量,保存要使用的对象工厂列表的环境属性的名称。该属性的值应该是一个以冒号分隔的工厂类的完全限定类名列表,根据对象的信息创建对象。此属性可以在环境中指定,系统属性中指定,或者在一个或多个资源文件中指定。此常量的值为“java.naming.factory.object”。
- 参见:
-
STATE_FACTORIES
常量,保存要使用的状态工厂列表的环境属性的名称。该属性的值应该是一个以冒号分隔的状态工厂类的完全限定类名列表,将用于根据对象本身获取对象状态。此属性可以在环境中指定,系统属性中指定,或者在一个或多个资源文件中指定。此常量的值为“java.naming.factory.state”。
- 自:
- 1.3
- 参见:
-
URL_PKG_PREFIXES
常量,保存在加载URL上下文工厂时要使用的包前缀列表的环境属性的名称。该属性的值应该是一个以冒号分隔的包前缀列表,用于创建URL上下文工厂的工厂类的类名。此属性可以在环境中指定,系统属性中指定,或者在一个或多个资源文件中指定。前缀com.sun.jndi.url
始终附加到可能为空的包前缀列表中。此常量的值为“java.naming.factory.url.pkgs”。
- 参见:
-
PROVIDER_URL
常量,保存要使用的服务提供程序的配置信息的环境属性的名称。该属性的值应该包含一个URL字符串(例如“ldap://somehost:389”)。此属性可以在环境中指定,系统属性中指定,或者在一个或多个资源文件中指定。如果未在这些来源中的任何一个中指定,则默认配置由服务提供程序确定。此常量的值为“java.naming.provider.url”。
- 参见:
-
DNS_URL
持有用于指定JNDI URL上下文中要使用的DNS主机和域名的环境属性名称的常量(例如,“dns://somehost/wiz.com”)。此属性可以在环境中、系统属性中或资源文件中指定。如果未在这些来源中的任何一个中指定,并且程序尝试使用包含DNS名称的JNDI URL,则将抛出一个ConfigurationException
。此常量的值为“java.naming.dns.url”。
- 参见:
-
AUTHORITATIVE
持有用于指定所请求服务的权威性的环境属性名称的常量。如果属性的值为字符串“true”,则表示访问的是最权威的源(即绕过任何缓存或副本)。如果值为其他任何值,则源不需要(但可能)是权威的。如果未指定,则默认值为“false”。此常量的值为“java.naming.authoritative”。
- 参见:
-
BATCHSIZE
持有用于指定通过服务协议返回数据时要使用的批处理大小的环境属性名称的常量。这是一个提示,供应商应该以指定大小的批次返回操作的结果,以便供应商可以优化其性能和资源的使用。属性的值是整数的字符串表示。如果未指定,则批处理大小由服务提供商确定。此常量的值为“java.naming.batchsize”。
- 参见:
-
REFERRAL
持有用于指定服务提供商遇到的引荐应如何处理的环境属性名称的常量。属性的值是以下字符串之一:- “follow”
- 自动跟随引荐
- “ignore”
- 忽略引荐
- “throw”
-
当遇到引荐时抛出
ReferralException
。
此常量的值为“java.naming.referral”。
- 参见:
-
SECURITY_PROTOCOL
持有用于指定要使用的安全协议的环境属性名称的常量。其值是由服务提供商确定的字符串(例如“ssl”)。如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.protocol”。
- 参见:
-
SECURITY_AUTHENTICATION
持有用于指定要使用的安全级别的环境属性名称的常量。其值是以下字符串之一:“none”、“simple”、“strong”。如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.authentication”。
- 参见:
-
SECURITY_PRINCIPAL
持有用于指定用于将调用者身份进行身份验证的主体的环境属性名称的常量。主体的格式取决于身份验证方案。如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.principal”。
- 参见:
-
SECURITY_CREDENTIALS
持有用于指定用于将调用者进行身份验证的主体的凭据的环境属性名称的常量。属性的值取决于身份验证方案。例如,它可以是哈希密码、明文密码、密钥、证书等。如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.credentials”。
- 参见:
-
LANGUAGE
持有用于指定与服务一起使用的首选语言的环境属性名称的常量。属性的值是RFC 1766中定义的语言标签的以冒号分隔的列表。如果未指定此属性,则语言偏好由服务提供商确定。此常量的值为“java.naming.language”。
- 参见:
-
APPLET
Deprecated, for removal: This API element is subject to removal in a future version.An environment property with this name is ignored while constructing an initial context. This constant was originally used as a property name to specify anApplet
to retrieve parameters from, when creating an initial context. Currently any applet properties that need to be passed to an initial context should be copied into the environment hashtable:Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, ((Applet) this).getParameter(Context.INITIAL_CONTEXT_FACTORY)); env.put(Context.PROVIDER_URL, ((Applet) this).getParameter(Context.PROVIDER_URL)); // ... other properties ... Context ctx = new InitialContext(env);
- 自JDK版本:
- 1.3
- 参见:
-
-
Method Details
-
lookup
检索命名对象。如果name
为空,则返回此上下文的新实例(表示与此上下文相同的命名上下文,但其环境可以独立修改并且可以同时访问)。- 参数:
-
name
- 要查找的对象的名称 - 返回:
-
绑定到
name
的对象 - 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
lookup
检索命名对象。有关详细信息,请参见lookup(Name)
。- 参数:
-
name
- 要查找的对象的名称 - 返回:
-
绑定到
name
的对象 - 抛出:
-
NamingException
- 如果遇到命名异常
-
bind
将名称绑定到对象。所有中间上下文和目标上下文(由名称的除了终端原子组件之外的所有部分命名的上下文)必须已经存在。- 参数:
-
name
- 要绑定的名称;不能为空 -
obj
- 要绑定的对象;可能为空 - 抛出:
-
NameAlreadyBoundException
- 如果名称已经绑定 -
InvalidAttributesException
- 如果对象未提供所有必需属性 -
NamingException
- 如果遇到命名异常 - 参见:
-
bind
将名称绑定到对象。有关详细信息,请参见bind(Name, Object)
。- 参数:
-
name
- 要绑定的名称;不能为空 -
obj
- 要绑定的对象;可能为空 - 抛出:
-
NameAlreadyBoundException
- 如果名称已经绑定 -
InvalidAttributesException
- 如果对象未提供所有必需的属性 -
NamingException
- 如果遇到命名异常
-
rebind
将名称绑定到对象,覆盖任何现有绑定。所有中间上下文和目标上下文(由名称的除了终端原子组件之外的所有部分命名的上下文)必须已经存在。如果对象是一个
DirContext
,则与名称关联的任何现有属性将被替换为对象的属性。否则,与名称关联的任何现有属性保持不变。- 参数:
-
name
- 要绑定的名称;不能为空 -
obj
- 要绑定的对象;可能为空 - 抛出:
-
InvalidAttributesException
- 如果对象未提供所有必需的属性 -
NamingException
- 如果遇到命名异常 - 参见:
-
rebind
将名称绑定到对象,覆盖任何现有绑定。有关详细信息,请参见rebind(Name, Object)
。- 参数:
-
name
- 要绑定的名称;不能为空 -
obj
- 要绑定的对象;可能为空 - 抛出:
-
InvalidAttributesException
- 如果对象未提供所有必需的属性 -
NamingException
- 如果遇到命名异常
-
unbind
解绑命名对象。从目标上下文中删除name
中的终端原子名称。此方法是幂等的。即使终端原子名称未绑定到目标上下文,它也会成功,但如果任何中间上下文不存在,则会抛出
NameNotFoundException
。与名称关联的任何属性都将被移除。中间上下文不会被更改。
- 参数:
-
name
- 要解绑的名称;不能为空 - 抛出:
-
NameNotFoundException
- 如果中间上下文不存在 -
NamingException
- 如果遇到命名异常 - 参见:
-
unbind
解绑命名对象。有关详细信息,请参见unbind(Name)
。- 参数:
-
name
- 要解绑的名称;不能为空 - 抛出:
-
NameNotFoundException
- 如果中间上下文不存在 -
NamingException
- 如果遇到命名异常
-
rename
将新名称绑定到旧名称绑定的对象,并解绑旧名称。两个名称都是相对于此上下文的。与旧名称关联的任何属性将与新名称关联。旧名称的中间上下文不会更改。- 参数:
-
oldName
- 现有绑定的名称;不能为空 -
newName
- 新绑定的名称;不能为空 - 抛出:
-
NameAlreadyBoundException
- 如果newName
已经绑定 -
NamingException
- 如果遇到命名异常 - 参见:
-
rename
将新名称绑定到旧名称绑定的对象,并解绑旧名称。有关详细信息,请参见rename(Name, Name)
。- 参数:
-
oldName
- 现有绑定的名称;不能为空 -
newName
- 新绑定的名称;不能为空 - 抛出:
-
NameAlreadyBoundException
- 如果newName
已经绑定 -
NamingException
- 如果遇到命名异常
-
list
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。不包括任何子上下文的内容。如果向此上下文添加或删除绑定,则先前返回的枚举的影响是未定义的。
- 参数:
-
name
- 要列出的上下文的名称 - 返回:
-
此上下文中绑定的名称和类名的枚举。枚举的每个元素的类型为
NameClassPair
。 - 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
list
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。有关详细信息,请参见list(Name)
。- 参数:
-
name
- 要列出的上下文的名称 - 返回:
-
此上下文中绑定的名称和类名的枚举。枚举的每个元素的类型为
NameClassPair
。 - 抛出:
-
NamingException
- 如果遇到命名异常
-
listBindings
枚举命名上下文中绑定的名称,以及绑定到它们的对象。不包括任何子上下文的内容。如果向此上下文添加或删除绑定,则先前返回的枚举的影响是未定义的。
- 参数:
-
name
- 要列出的上下文的名称 - 返回:
-
此上下文中绑定的枚举。枚举的每个元素的类型为
Binding
。 - 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
listBindings
枚举命名上下文中绑定的名称,以及绑定到它们的对象。有关详细信息,请参见listBindings(Name)
。- 参数:
-
name
- 要列出的上下文的名称 - 返回:
-
此上下文中绑定的枚举。枚举的每个元素的类型为
Binding
。 - 抛出:
-
NamingException
- 如果遇到命名异常
-
destroySubcontext
销毁命名上下文并将其从命名空间中移除。与名称关联的任何属性也将被移除。中间上下文不会被销毁。此方法是幂等的。即使终端原子名称未绑定到目标上下文,它也会成功,但如果任何中间上下文不存在,则会抛出
NameNotFoundException
。在联合命名系统中,来自一个命名系统的上下文可能绑定到另一个名称。随后可以使用复合名称查找并对外部上下文执行操作。但是,尝试使用此复合名称销毁上下文将失败,并显示
NotContextException
,因为外部上下文不是绑定它的上下文的“子上下文”。相反,请使用unbind()
来移除外部上下文的绑定。销毁外部上下文需要在外部上下文的“本机”命名系统上执行destroySubcontext()
。- 参数:
-
name
- 要销毁的上下文的名称;不能为空 - 抛出:
-
NameNotFoundException
- 如果中间上下文不存在 -
NotContextException
- 如果名称已绑定但不是上下文,或者不是适当类型的上下文 -
ContextNotEmptyException
- 如果命名上下文不为空 -
NamingException
- 如果遇到命名异常 - 参见:
-
destroySubcontext
销毁指定的上下文并将其从命名空间中移除。有关详细信息,请参阅destroySubcontext(Name)
。- 参数:
-
name
- 要销毁的上下文的名称;不能为空 - 抛出:
-
NameNotFoundException
- 如果中间上下文不存在 -
NotContextException
- 如果名称已绑定但不是上下文,或者不是适当类型的上下文 -
ContextNotEmptyException
- 如果命名上下文不为空 -
NamingException
- 如果遇到命名异常
-
createSubcontext
创建并绑定新的上下文。使用给定名称创建新的上下文,并将其绑定到目标上下文(由名称的除了终端原子组件的所有部分命名)。所有中间上下文和目标上下文必须已经存在。- 参数:
-
name
- 要创建的上下文的名称;不能为空 - 返回:
- 新创建的上下文
- 抛出:
-
NameAlreadyBoundException
- 如果名称已经绑定 -
InvalidAttributesException
- 如果创建子上下文需要指定强制属性 -
NamingException
- 如果遇到命名异常 - 参见:
-
createSubcontext
创建并绑定新的上下文。有关详细信息,请参阅createSubcontext(Name)
。- 参数:
-
name
- 要创建的上下文的名称;不能为空 - 返回:
- 新创建的上下文
- 抛出:
-
NameAlreadyBoundException
- 如果名称已经绑定 -
InvalidAttributesException
- 如果创建子上下文需要指定强制属性 -
NamingException
- 如果遇到命名异常
-
lookupLink
检索指定名称的对象,遵循链接,但不包括名称的终端原子组件。如果绑定到name
的对象不是链接,则返回对象本身。- 参数:
-
name
- 要查找的对象的名称 - 返回:
-
绑定到
name
的对象,不包括终端链接(如果有)。 - 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
lookupLink
检索指定名称的对象,遵循链接,但不包括名称的终端原子组件。有关详细信息,请参阅lookupLink(Name)
。- 参数:
-
name
- 要查找的对象的名称 - 返回:
-
绑定到
name
的对象,不包括终端链接(如果有) - 抛出:
-
NamingException
- 如果遇到命名异常
-
getNameParser
检索与指定上下文关联的解析器。在命名空间联合中,不同的命名系统将以不同方式解析名称。此方法允许应用程序获取解析器,使用特定命名系统的命名约定将名称解析为其原子组件。在任何单个命名系统中,此方法返回的NameParser
对象必须相等(使用equals()
测试)。- 参数:
-
name
- 要获取解析器的上下文的名称 - 返回:
- 可以将复合名称解析为其原子组件的名称解析器
- 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
getNameParser
检索与指定上下文关联的解析器。有关详细信息,请参阅getNameParser(Name)
。- 参数:
-
name
- 要获取解析器的上下文的名称 - 返回:
- 可以将复合名称解析为其原子组件的名称解析器
- 抛出:
-
NamingException
- 如果遇到命名异常
-
composeName
将此上下文的名称与相对于此上下文的名称组合。给定相对于此上下文的名称(name
)和此上下文相对于其祖先之一的名称(prefix
),此方法返回使用涉及的命名系统的语法组合两个名称的结果。也就是说,如果name
命名相对于此上下文的对象,则结果是相同对象的名称,但相对于祖先上下文。任何名称都不能为null。例如,如果此上下文相对于初始上下文命名为"wiz.com",那么
composeName("east", "wiz.com")
可能返回"east.wiz.com"
。如果相反,此上下文命名为"org/research",那么composeName("user/jane", "org/research")
可能返回"org/research/user/jane"
,而composeName("user/jane", "research")
返回"research/user/jane"
。- 参数:
-
name
- 相对于此上下文的名称 -
prefix
- 此上下文相对于其祖先之一的名称 - 返回:
-
prefix
和name
的组合 - 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
composeName
将此上下文的名称与相对于此上下文的名称组合。有关详细信息,请参阅composeName(Name, Name)
。- 参数:
-
name
- 相对于此上下文的名称 -
prefix
- 此上下文相对于其祖先之一的名称 - 返回:
-
prefix
和name
的组合 - 抛出:
-
NamingException
- 如果遇到命名异常
-
addToEnvironment
向此上下文的环境中添加新的环境属性。如果属性已经存在,则其值将被覆盖。有关环境属性的更多详细信息,请参阅类描述。- 参数:
-
propName
- 要添加的环境属性的名称;不能为空 -
propVal
- 要添加的属性的值;不能为空 - 返回:
- 属性的先前值,如果属性之前不在环境中则为null
- 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
removeFromEnvironment
从此上下文的环境中删除环境属性。有关环境属性的更多详细信息,请参阅类描述。- 参数:
-
propName
- 要删除的环境属性的名称;不能为空 - 返回:
- 属性的先前值,如果属性不在环境中则为null
- 抛出:
-
NamingException
- 如果遇到命名异常 - 参见:
-
getEnvironment
检索此上下文中生效的环境。有关环境属性的更多详细信息,请参阅类描述。调用者不应对返回的对象进行任何更改:对上下文的影响是未定义的。可以使用
addToEnvironment()
和removeFromEnvironment()
更改此上下文的环境。- 返回:
- 此上下文的环境;永不为null
- 抛出:
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
close
关闭此上下文。此方法立即释放此上下文的资源,而不是等待垃圾回收器自动释放它们。此方法是幂等的:在已关闭的上下文上调用它不会产生任何效果。不允许在已关闭的上下文上调用任何其他方法,并导致未定义的行为。
- 抛出:
-
NamingException
- 如果遇到命名异常
-
getNameInNamespace
检索此上下文在其自己命名空间中的完整名称。许多命名服务对其各自命名空间中的对象有一个“完整名称”的概念。例如,LDAP条目具有一个专有名称,DNS记录具有一个完全限定名称。此方法允许客户端应用程序检索此名称。此方法返回的字符串不是JNDI复合名称,不应直接传递给上下文方法。对于没有完整名称概念的命名系统,将抛出
OperationNotSupportedException
。- 返回:
- 此上下文在其自己命名空间中的名称;永不为null
- 抛出:
-
OperationNotSupportedException
- 如果命名系统没有完整名称的概念 -
NamingException
- 如果遇到命名异常 - 自1.3起
- 1.3
-