- 所有已知的子接口:
DirContext
,EventContext
,EventDirContext
,LdapContext
- 所有已知的实现类:
InitialContext
,InitialDirContext
,InitialLdapContext
名称
作为参数传递给Context
方法的每个名称都与该上下文相关。空名称用于命名上下文本身。名称参数永远不能为空。
大多数方法都有重载版本,一种采用 Name
参数,一种采用 String
参数。这些重载版本是等效的,因为如果 Name
和 String
参数只是同名的不同表示,那么相同方法的重载版本的行为相同。在下面的方法描述中,只有一个版本被完整记录。第二个版本有一个指向第一个的链接:相同的文档适用于两个。
对于支持联合的系统,String
Context
方法的名称参数是复合名称。作为 CompositeName
实例的名称参数被视为复合名称,而不是 CompositeName
实例的 Name
参数被视为复合名称(可能是 CompoundName
的实例或复合名称的其他实现)。这允许将 NameParser.parse()
的结果用作 Context
方法的参数。在 JNDI 1.2 之前,所有名称参数都被视为复合名称。
此外,对于支持联合的系统,NamingEnumeration
中从 list()
和 listBindings()
返回的所有名称都是表示为字符串的复合名称。有关名称的字符串语法,请参阅 CompositeName
。
对于不支持联合的系统,名称参数(以 Name
或 String
形式)和在 NamingEnumeration
中返回的名称可能是它们自己的名称空间中的名称,而不是复合名称空间中的名称,由服务提供商自行决定。
异常
此接口中的所有方法都可以抛出NamingException
或其任何子类。有关每个异常的详细信息,请参阅 NamingException
及其子类。
并发访问
不保证 Context 实例与多个线程的并发访问同步。需要同时访问单个 Context 实例的线程应该在它们之间同步并提供必要的锁定。每个操作不同上下文实例的多个线程不需要同步。请注意,lookup
方法在传递空名称时,将返回表示相同命名上下文的新 Context 实例。
出于并发控制的目的,返回 NamingEnumeration
的 Context 操作在枚举仍在使用中或仍在遵循该操作生成的任何引用时不被视为已完成。
参数
服务提供商不会修改传递给Context
接口或其子接口之一的任何方法的 Name
参数。服务提供商可以在操作期间保留对它的引用,包括方法结果的任何枚举和生成的任何引用的处理。调用者不应在此期间修改对象。任何此类方法返回的 Name
归调用者所有。调用者可以随后修改它;服务提供商可能不会。
环境属性
JNDI 应用程序需要一种方式来传达各种首选项和属性,这些首选项和属性定义了访问命名和目录服务的环境。例如,上下文可能需要指定安全凭证才能访问服务。另一个上下文可能需要提供服务配置信息。这些被称为上下文的environment。 Context
接口提供了检索和更新此环境的方法。
当上下文方法从一个上下文进行到下一个上下文时,环境从父上下文继承。一个上下文的环境变化不会直接影响其他上下文的环境。
当使用和/或验证环境属性的有效性时,它依赖于实现。例如,一些与安全相关的属性被服务提供者用来“登录”目录。此登录过程可能在创建上下文时发生,或者在上下文上第一次调用方法时发生。何时以及是否发生这种情况取决于实现。当在上下文中添加或删除环境属性时,验证更改的有效性再次依赖于实现。例如,某些属性的验证可能会在进行更改时发生,或者在对上下文执行下一个操作时发生,或者根本不会发生。
任何引用上下文的对象都可以检查该上下文的环境。不应将明文密码等敏感信息存储在那里,除非已知实现可以保护它。
资源文件
为了简化设置 JNDI 应用程序所需环境的任务,应用程序组件和服务提供者可以与 resource files. 一起分发。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 资源文件:provider 和 application。
提供者资源文件
每个服务提供者都有一个可选资源,其中列出了特定于该提供者的属性。该资源的名称是:
[prefix /]jndiprovider.properties
其中 prefix 是提供者的上下文实现的包名称,每个句点 (".") 转换为斜杠 ("/")。例如,假设服务提供者定义了一个类名为 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
的 application resource files。此外,如果 Java 安装目录包含内置属性文件(通常为 conf/jndi.properties
),JNDI 会将其视为附加的应用程序资源文件。这些文件中包含的所有属性都放置在初始上下文的环境中。这个环境然后被其他上下文继承。
对于在多个应用程序资源文件中找到的每个属性,JNDI 使用找到的第一个值,或者在一些有意义的情况下,它连接所有的值(细节在下面给出)。例如,如果在三个 jndi.properties
资源文件中找到“java.naming.factory.object”属性,则对象工厂列表是所有三个文件的属性值的串联。使用此方案,每个可部署组件负责列出它导出的工厂。 JNDI 在搜索工厂类时自动收集并使用所有这些导出列表。
属性搜索算法
当 JNDI 构造初始上下文时,上下文的环境使用传递给构造函数的环境参数中定义的属性、系统属性和应用程序资源文件进行初始化。有关详细信息,请参阅InitialContext
。这个初始环境然后由其他上下文实例继承。
当 JNDI 类库需要确定属性的值时,它通过按顺序合并以下两个来源的值来实现:
- 正在运行的上下文环境。
- 正在操作的上下文的提供程序资源文件 (
jndiprovider.properties
)。
当服务提供者需要确定属性的值时,它通常会直接从环境中获取该值。服务提供者可以定义特定于提供者的属性以放置在它自己的提供者资源文件中。在这种情况下,它应该按照上一段中的描述合并值。
这样,每个服务提供者开发人员都可以指定一个工厂列表以供该服务提供者使用。这些可以由应用程序的部署者指定的应用程序资源修改,而这些资源又可以由用户修改。
- 自从:
- 1.3
-
字段摘要
字段修饰符和类型Field描述static 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 上下文工厂中加载时要使用的包前缀列表。 -
方法总结
修饰符和类型方法描述addToEnvironment
(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
解除绑定命名对象。
-
字段详细信息
-
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
包含环境属性名称的常量,用于指定如何处理服务提供者遇到的引用。该属性的值是以下字符串之一:- “跟随”
- 自动关注推荐
- “忽略”
- 忽略推荐
- “扔”
-
遇到推荐时抛出
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
已弃用,将被删除:此 API 元素可能会在未来版本中删除。构造初始上下文时忽略具有此名称的环境属性。在创建初始上下文时,此常量最初用作属性名称以指定Applet
以从中检索参数。当前,任何需要传递给初始上下文的小程序属性都应复制到环境哈希表中: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);
- 自从:
- 1.3
- 参见:
-
-
方法详情
-
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
中的终端原子名称——除了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
相对于此上下文命名对象,则结果是同一对象的名称,但相对于祖先上下文。所有名称都不能为空。例如,如果此上下文相对于初始上下文命名为“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()
更改此上下文的环境。- 返回:
- 这个上下文的环境;永不为空
- 抛出:
NamingException
- 如果遇到命名异常- 参见:
-
close
关闭此上下文。此方法立即释放此上下文的资源,而不是等待它们被垃圾收集器自动释放。此方法是幂等的:在已经关闭的上下文中调用它没有任何效果。不允许在封闭的上下文中调用任何其他方法,这会导致未定义的行为。
- 抛出:
NamingException
- 如果遇到命名异常
-
getNameInNamespace
在其自己的命名空间中检索此上下文的全名。许多命名服务在各自的命名空间中都有一个对象的“全名”概念。例如,LDAP 条目具有专有名称,而 DNS 记录具有完全限定名称。此方法允许客户端应用程序检索此名称。此方法返回的字符串不是 JNDI 复合名称,不应直接传递给上下文方法。在全名概念没有意义的命名系统中,抛出
OperationNotSupportedException
。- 返回:
- 此上下文在其自己的命名空间中的名称;永不为空
- 抛出:
OperationNotSupportedException
- 如果命名系统没有全名的概念NamingException
- 如果遇到命名异常- 自从:
- 1.3
-