-
- All Known Subinterfaces:
-
DirContext
,EventContext
,EventDirContext
,LdapContext
- 所有已知实现类:
-
InitialContext
,InitialDirContext
,InitialLdapContext
public interface Context
此接口表示命名上下文,该命名上下文由一组名称到对象绑定组成。 它包含检查和更新这些绑定的方法。名称
作为参数传递给Context
方法的每个名称都与该上下文相关。 空名称用于命名上下文本身。 name参数可能永远不会为null。大多数方法都有重载版本,其中一个采用
Name
参数,一个采用String
。 这些重载版本是等效的,如果Name
和String
参数只是同一名称的不同表示,则相同方法的重载版本的行为相同。 在下面的方法描述中,只有一个版本已完整记录。 第二个版本的链接指向第一个版本:相同的文档适用于两者。对于支持联合的系统,
String
Context
方法的名称参数是复合名称。 名称是的实例参数CompositeName
被视为复合名称,而Name
参数不属于的实例CompositeName
作为化合物名称治疗(其可能是实例CompoundName
或化合物名称的其它实施方式)。 这允许NameParser.parse()
的结果用作Context
方法的参数。 在JNDI 1.2之前,所有名称参数都被视为复合名称。此外,对于支持联合的系统,
NamingEnumeration
从list()
和listBindings()
返回的所有名称都是表示为字符串的复合名称。 有关名称的字符串语法,请参阅CompositeName
。对于不支持联合的系统,名称参数(在
Name
或String
表单中)和NamingEnumeration
返回的名称可以是它们自己的命名空间中的名称,而不是复合命名空间中的名称,由服务提供商自行决定。例外
此接口中的所有方法都可以抛出NamingException
或其任何子类。 有关每个异常的详细信息,请参阅NamingException
及其子类。并发访问
不保证Context实例与多个线程的并发访问同步。 需要同时访问单个Context实例的线程应该在它们之间进行同步并提供必要的锁定。 每个操作不同Context实例的多个线程无需同步。 请注意,传递空名称时,lookup
方法将返回表示相同命名上下文的新Context实例。出于并发控制的目的,在枚举仍在使用中,或者仍然遵循该操作生成的任何引用时,不会认为返回
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资源文件有两种: 提供者和应用程序 。
提供者资源文件
每个服务提供商都有一个可选资源,列出了该提供商特有的属性。 该资源的名称是:[ prefix/]
其中prefix是提供者的上下文实现的包名称,每个句点(“。”)都转换为斜杠(“/”)。 例如,假设服务提供者定义了类名为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构造初始上下文时,将使用传递给构造函数,系统属性和应用程序资源文件的environment参数中定义的属性初始化上下文的环境。 有关详细信息,请参阅InitialContext
。 然后,此初始环境将由其他上下文实例继承。当JNDI类库需要确定属性的值时,它通过合并来自以下两个源的值按顺序执行:
- 正在运行的环境的环境。
- 正在操作的上下文的提供程序资源文件(
jndiprovider.properties
)。
当服务提供者需要确定属性的值时,通常会直接从环境中获取该值。 服务提供者可以定义要在其自己的提供者资源文件中放置的特定于提供者的属性。 在这种情况下,它应该合并上一段中描述的值。
通过这种方式,每个服务提供者开发者可以指定与该服务提供者一起使用的工厂列表。 这些可以由应用程序的部署者指定的应用程序资源来修改,而应用程序资源又可以由用户修改。
- 从以下版本开始:
- 1.3
-
-
字段汇总
字段 变量和类型 字段 描述 static String
APPLET
已过时。在构造初始上下文时,将忽略具有此名称的环境属性。static String
AUTHORITATIVE
保存环境属性名称的常量,用于指定所请求服务的权威性。static String
BATCHSIZE
保存环境属性名称的常量,用于指定通过服务协议返回数据时要使用的批处理大小。static String
DNS_URL
保存环境属性名称的常量,用于指定用于JNDI URL上下文的DNS主机和域名(例如,“dns://somehost/wiz.com”)。static String
INITIAL_CONTEXT_FACTORY
包含环境属性名称的常量,用于指定要使用的初始上下文工厂。static String
LANGUAGE
包含环境属性名称的常量,用于指定与服务一起使用的首选语言。static String
OBJECT_FACTORIES
包含环境属性名称的常量,用于指定要使用的对象工厂列表。static String
PROVIDER_URL
保存环境属性名称的常量,用于指定要使用的服务提供者的配置信息。static String
REFERRAL
包含环境属性名称的常量,用于指定如何处理服务提供者遇到的引用。static String
SECURITY_AUTHENTICATION
包含环境属性名称的常量,用于指定要使用的安全级别。static String
SECURITY_CREDENTIALS
保存环境属性名称的常量,用于指定用于验证服务调用者的主体凭据。static String
SECURITY_PRINCIPAL
保存环境属性名称的常量,用于指定用于验证服务调用者的主体的标识。static String
SECURITY_PROTOCOL
保存环境属性名称的常量,用于指定要使用的安全协议。static String
STATE_FACTORIES
包含环境属性名称的常量,用于指定要使用的状态工厂列表。static String
URL_PKG_PREFIXES
包含环境属性名称的常量,用于指定在URL上下文工厂中加载时要使用的包前缀列表。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 Object
addToEnvironment(String propName, Object propVal)
将新环境属性添加到此上下文的环境中。void
bind(String name, Object obj)
将名称绑定到对象。void
bind(Name name, Object obj)
将名称绑定到对象。void
close()
关闭此背景。String
composeName(String name, String prefix)
使用与此上下文相关的名称组合此上下文的名称。Name
composeName(Name name, Name prefix)
使用与此上下文相关的名称组合此上下文的名称。Context
createSubcontext(String name)
创建并绑定新上下文。Context
createSubcontext(Name name)
创建并绑定新上下文。void
destroySubcontext(String name)
销毁命名上下文并将其从命名空间中删除。void
destroySubcontext(Name name)
销毁命名上下文并将其从命名空间中删除。Hashtable<?,?>
getEnvironment()
检索对此上下文有效的环境。String
getNameInNamespace()
在其自己的命名空间中检索此上下文的全名。NameParser
getNameParser(String name)
检索与命名上下文关联的解析器。NameParser
getNameParser(Name name)
检索与命名上下文关联的解析器。NamingEnumeration<NameClassPair>
list(String name)
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。NamingEnumeration<NameClassPair>
list(Name name)
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。NamingEnumeration<Binding>
listBindings(String name)
枚举命名上下文中绑定的名称以及绑定到它们的对象。NamingEnumeration<Binding>
listBindings(Name name)
枚举命名上下文中绑定的名称以及绑定到它们的对象。Object
lookup(String name)
检索命名对象。Object
lookup(Name name)
检索命名对象。Object
lookupLink(String name)
检索命名对象,除了名称的终端原子组件之外的链接。Object
lookupLink(Name name)
检索命名对象,除了名称的终端原子组件之外的链接。void
rebind(String name, Object obj)
将名称绑定到对象,覆盖任何现有绑定。void
rebind(Name name, Object obj)
将名称绑定到对象,覆盖任何现有绑定。Object
removeFromEnvironment(String propName)
从此上下文的环境中删除环境属性。void
rename(String oldName, String newName)
将新名称绑定到绑定到旧名称的对象,并取消绑定旧名称。void
rename(Name oldName, Name newName)
将新名称绑定到绑定到旧名称的对象,并取消绑定旧名称。void
unbind(String name)
取消绑定命名对象。void
unbind(Name name)
取消绑定命名对象。
-
-
-
字段详细信息
-
INITIAL_CONTEXT_FACTORY
static final String INITIAL_CONTEXT_FACTORY
包含环境属性名称的常量,用于指定要使用的初始上下文工厂。 属性的值应该是将创建初始上下文的工厂类的完全限定类名。 可以在传递给初始上下文构造函数的环境参数,系统属性或应用程序资源文件中指定此属性。 如果未在任何这些源中指定,则在完成操作需要初始上下文时将引发NoInitialContextException
。此常量的值为“java.naming.factory.initial”。
-
OBJECT_FACTORIES
static final String OBJECT_FACTORIES
包含环境属性名称的常量,用于指定要使用的对象工厂列表。 属性的值应该是以冒号分隔的工厂类的完全限定类名列表,这些类将在给定有关对象的信息的情况下创建对象。 可以在环境,系统属性或一个或多个资源文件中指定此属性。此常量的值为“java.naming.factory.object”。
-
STATE_FACTORIES
static final String STATE_FACTORIES
包含环境属性名称的常量,用于指定要使用的状态工厂列表。 属性的值应该是以冒号分隔的状态工厂类的完全限定类名列表,这些类将用于在给定对象本身的情况下获取对象的状态。 可以在环境,系统属性或一个或多个资源文件中指定此属性。此常量的值为“java.naming.factory.state”。
-
URL_PKG_PREFIXES
static final String URL_PKG_PREFIXES
包含环境属性名称的常量,用于指定在URL上下文工厂中加载时要使用的包前缀列表。 属性的值应该是以冒号分隔的包前缀列表,用于创建URL上下文工厂的工厂类的类名。 可以在环境,系统属性或一个或多个资源文件中指定此属性。 前缀com.sun.jndi.url
始终附加到可能为空的包前缀列表中。此常量的值为“java.naming.factory.url.pkgs”。
-
PROVIDER_URL
static final String PROVIDER_URL
保存环境属性名称的常量,用于指定要使用的服务提供者的配置信息。 属性的值应包含URL字符串(例如“ldap:// somehost:389”)。 可以在环境,系统属性或资源文件中指定此属性。 如果未在任何这些源中指定,则默认配置由服务提供商确定。此常量的值为“java.naming.provider.url”。
-
DNS_URL
static final String DNS_URL
保存环境属性名称的常量,用于指定用于JNDI URL上下文的DNS主机和域名(例如,“dns://somehost/wiz.com”)。 可以在环境,系统属性或资源文件中指定此属性。 如果未在任何这些源中指定并且程序尝试使用包含DNS名称的JNDI URL,则将引发ConfigurationException
。此常量的值为“java.naming.dns.url”。
-
AUTHORITATIVE
static final String AUTHORITATIVE
保存环境属性名称的常量,用于指定所请求服务的权威性。 如果属性的值是字符串“true”,则表示访问权限是最权威的源(即绕过任何缓存或副本)。 如果该值是其他任何值,则源不必是(但可能是)权威的。 如果未指定,则值默认为“false”。此常量的值为“java.naming.authoritative”。
-
BATCHSIZE
static final String BATCHSIZE
保存环境属性名称的常量,用于指定通过服务协议返回数据时要使用的批处理大小。 这是提供程序提示以指定大小的批量返回操作的结果,因此提供程序可以优化其性能和资源使用。 该属性的值是整数的字符串表示形式。 如果未指定,批量大小由服务提供商确定。此常量的值为“java.naming.batchsize”。
-
REFERRAL
static final String REFERRAL
包含环境属性名称的常量,用于指定如何处理服务提供者遇到的引用。 该属性的值是以下字符串之一:- “跟随”
- 自动关注推荐
- “忽视”
- 忽略推荐
- “扔”
- 遇到引荐时抛出
ReferralException
。
此常量的值为“java.naming.referral”。
-
SECURITY_PROTOCOL
static final String SECURITY_PROTOCOL
保存环境属性名称的常量,用于指定要使用的安全协议。 其值是由服务提供商确定的字符串(例如“ssl”)。 如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.protocol”。
-
SECURITY_AUTHENTICATION
static final String SECURITY_AUTHENTICATION
包含环境属性名称的常量,用于指定要使用的安全级别。 它的值是以下字符串之一:“none”,“simple”,“strong”。 如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.authentication”。
-
SECURITY_PRINCIPAL
static final String SECURITY_PRINCIPAL
保存环境属性名称的常量,用于指定用于验证服务调用者的主体的标识。 主体的格式取决于身份验证方案。 如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.principal”。
-
SECURITY_CREDENTIALS
static final String SECURITY_CREDENTIALS
保存环境属性名称的常量,用于指定用于验证服务调用者的主体凭据。 属性的值取决于身份验证方案。 例如,它可以是哈希密码,明文密码,密钥,证书等。 如果未指定此属性,则行为由服务提供商确定。此常量的值为“java.naming.security.credentials”。
-
LANGUAGE
static final String LANGUAGE
包含环境属性名称的常量,用于指定与服务一起使用的首选语言。 该属性的值是RFC 1766中定义的以冒号分隔的语言标记列表。如果未指定此属性,则语言首选项由服务提供者确定。这个常量的值是“java.naming.language”。
-
APPLET
@Deprecatedstatic final String APPLET
Deprecated.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);
- 从以下版本开始:
- 1.3
- 另请参见:
- 常数字段值
-
-
方法详细信息
-
lookup
Object lookup(Name name) throws NamingException
检索命名对象。 如果name
为空,则返回此上下文的新实例(表示与此上下文相同的命名上下文,但其环境可以单独修改,并且可以同时访问它)。- 参数
-
name
- 要查找的对象的名称 - 结果
- 绑定到
name
的对象 - 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
lookup(String)
,lookupLink(Name)
-
lookup
Object lookup(String name) throws NamingException
检索命名对象。 有关详细信息,请参阅lookup(Name)
。- 参数
-
name
- 要查找的对象的名称 - 结果
- 绑定到
name
的对象 - 异常
-
NamingException
- 如果遇到命名异常
-
bind
void bind(Name name, Object obj) throws NamingException
将名称绑定到对象。 所有中间上下文和目标上下文(由名称的终端原子组件以外的所有名称命名)必须已存在。- 参数
-
name
- 要绑定的名称; 可能不是空的 -
obj
- 要绑定的对象; 可能为空 - 异常
-
NameAlreadyBoundException
- 如果名称已绑定 -
InvalidAttributesException
- 如果对象未提供所有必需属性 -
NamingException
- 如果遇到命名异常 - 另请参见:
-
bind(String, Object)
,rebind(Name, Object)
,DirContext.bind(Name, Object, javax.naming.directory.Attributes)
-
bind
void bind(String name, Object obj) throws NamingException
将名称绑定到对象。 有关详细信息,请参阅bind(Name, Object)
。- 参数
-
name
- 要绑定的名称; 可能不是空的 -
obj
- 要绑定的对象; 可能为空 - 异常
-
NameAlreadyBoundException
- 如果名称已绑定 -
InvalidAttributesException
- 如果对象未提供所有必需属性 -
NamingException
- 如果遇到命名异常
-
rebind
void rebind(Name name, Object obj) throws NamingException
将名称绑定到对象,覆盖任何现有绑定。 所有中间上下文和目标上下文(由名称的终端原子组件以外的所有名称命名)必须已存在。如果对象是
DirContext
,则与该名称关联的任何现有属性都将替换为该对象的属性。 否则,与名称关联的任何现有属性保持不变。- 参数
-
name
- 要绑定的名称; 可能不是空的 -
obj
- 要绑定的对象; 可能为空 - 异常
-
InvalidAttributesException
- 如果对象未提供所有必需属性 -
NamingException
- 如果遇到命名异常 - 另请参见:
-
rebind(String, Object)
,bind(Name, Object)
,DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
,DirContext
-
rebind
void rebind(String name, Object obj) throws NamingException
将名称绑定到对象,覆盖任何现有绑定。 有关详细信息,请参阅rebind(Name, Object)
。- 参数
-
name
- 要绑定的名称; 可能不是空的 -
obj
- 要绑定的对象; 可能为空 - 异常
-
InvalidAttributesException
- 如果对象未提供所有必需属性 -
NamingException
- 如果遇到命名异常
-
unbind
void unbind(Name name) throws NamingException
取消绑定命名对象。 从目标上下文中删除name
的终端原子名称 - 由除name
的终端原子部分之外的所有目标命名。这种方法是幂等的。 即使终端原子名未绑定在目标上下文中,它也会成功,但如果任何中间上下文不存在,则抛出
NameNotFoundException
。将删除与名称关联的所有属性。 中间环境不会改变。
- 参数
-
name
- 取消绑定的名称; 可能不是空的 - 异常
-
NameNotFoundException
- 如果不存在中间上下文 -
NamingException
- 如果遇到命名异常 - 另请参见:
-
unbind(String)
-
unbind
void unbind(String name) throws NamingException
取消绑定命名对象。 有关详细信息,请参阅unbind(Name)
。- 参数
-
name
- 取消绑定的名称; 可能不是空的 - 异常
-
NameNotFoundException
- 如果不存在中间上下文 -
NamingException
- 如果遇到命名异常
-
rename
void rename(Name oldName, Name newName) throws NamingException
将新名称绑定到绑定到旧名称的对象,并取消绑定旧名称。 两个名称都与此上下文相关。 与旧名称关联的任何属性都与新名称相关联。 旧名称的中间上下文不会更改。- 参数
-
oldName
- 现有绑定的名称; 可能不是空的 -
newName
- 新绑定的名称; 可能不是空的 - 异常
-
NameAlreadyBoundException
- 如果已经绑定了newName
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
rename(String, String)
,bind(Name, Object)
,rebind(Name, Object)
-
rename
void rename(String oldName, String newName) throws NamingException
将新名称绑定到绑定到旧名称的对象,并取消绑定旧名称。 有关详细信息,请参阅rename(Name, Name)
。- 参数
-
oldName
- 现有绑定的名称; 可能不是空的 -
newName
- 新绑定的名称; 可能不是空的 - 异常
-
NameAlreadyBoundException
- 如果已经绑定newName
-
NamingException
- 如果遇到命名异常
-
list
NamingEnumeration<NameClassPair> list(Name name) throws NamingException
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。 不包括任何子上下文的内容。如果在此上下文中添加或删除绑定,则其对先前返回的枚举的影响未定义。
- 参数
-
name
- 要列出的上下文的名称 - 结果
- 此上下文中绑定的名称和类名的枚举。 枚举的每个元素都是
NameClassPair
类型。 - 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
list(String)
,listBindings(Name)
,NameClassPair
-
list
NamingEnumeration<NameClassPair> list(String name) throws NamingException
枚举命名上下文中绑定的名称,以及绑定到它们的对象的类名。 有关详细信息,请参阅list(Name)
。- 参数
-
name
- 要列出的上下文的名称 - 结果
- 此上下文中绑定的名称和类名的枚举。 枚举的每个元素都是
NameClassPair
类型。 - 异常
-
NamingException
- 如果遇到命名异常
-
listBindings
NamingEnumeration<Binding> listBindings(Name name) throws NamingException
枚举命名上下文中绑定的名称以及绑定到它们的对象。 不包括任何子上下文的内容。如果在此上下文中添加或删除绑定,则其对先前返回的枚举的影响未定义。
- 参数
-
name
- 要列出的上下文的名称 - 结果
- 在此上下文中绑定的枚举。 枚举的每个元素都是
Binding
类型。 - 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
listBindings(String)
,list(Name)
,Binding
-
listBindings
NamingEnumeration<Binding> listBindings(String name) throws NamingException
枚举命名上下文中绑定的名称以及绑定到它们的对象。 有关详细信息,请参阅listBindings(Name)
。- 参数
-
name
- 要列出的上下文的名称 - 结果
- 在此上下文中绑定的枚举。 枚举的每个元素都是
Binding
类型。 - 异常
-
NamingException
- 如果遇到命名异常
-
destroySubcontext
void destroySubcontext(Name name) throws NamingException
销毁命名上下文并将其从命名空间中删除。 与名称关联的任何属性也将被删除。 中间环境不会被破坏。这种方法是幂等的。 即使终端原子名未绑定在目标上下文中,它也会成功,但如果任何中间上下文不存在,则抛出
NameNotFoundException
。在联合命名系统中,来自一个命名系统的上下文可以绑定到另一个命名系统中的名称。 随后可以使用复合名称查找并对外部上下文执行操作。 然而,企图破坏使用此复合名称将失败与上下文
NotContextException
,因为外部上下文不是在它所在的上下文的“子上下文”。 而是使用unbind()
删除外部上下文的绑定。 销毁外来上下文需要在外部上下文的“本机”命名系统的上下文中执行destroySubcontext()
。- 参数
-
name
- 要销毁的上下文的名称; 可能不是空的 - 异常
-
NameNotFoundException
- 如果不存在中间上下文 -
NotContextException
- 如果名称已绑定但未命名上下文,或未命名相应类型的上下文 -
ContextNotEmptyException
- 如果指定的上下文不为空 -
NamingException
- 如果遇到命名异常 - 另请参见:
-
destroySubcontext(String)
-
destroySubcontext
void destroySubcontext(String name) throws NamingException
销毁命名上下文并将其从命名空间中删除。 有关详细信息,请参阅destroySubcontext(Name)
。- 参数
-
name
- 要销毁的上下文的名称; 可能不是空的 - 异常
-
NameNotFoundException
- 如果不存在中间上下文 -
NotContextException
- 如果名称已绑定但未命名上下文,或未命名相应类型的上下文 -
ContextNotEmptyException
- 如果指定的上下文不为空 -
NamingException
- 如果遇到命名异常
-
createSubcontext
Context createSubcontext(Name name) throws NamingException
创建并绑定新上下文。 创建具有给定名称的新上下文,并将其绑定在目标上下文中(由名称的终端原子组件命名)。 所有中间上下文和目标上下文必须已存在。- 参数
-
name
- 要创建的上下文的名称; 可能不是空的 - 结果
- 新创建的上下文
- 异常
-
NameAlreadyBoundException
- 如果名称已绑定 -
InvalidAttributesException
- 如果创建子上下文需要指定强制属性 -
NamingException
- 如果遇到命名异常 - 另请参见:
-
createSubcontext(String)
,DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)
-
createSubcontext
Context createSubcontext(String name) throws NamingException
创建并绑定新上下文。 有关详细信息,请参阅createSubcontext(Name)
。- 参数
-
name
- 要创建的上下文的名称; 可能不是空的 - 结果
- 新创建的上下文
- 异常
-
NameAlreadyBoundException
- 如果名称已绑定 -
InvalidAttributesException
- 如果创建子上下文需要指定强制属性 -
NamingException
- 如果遇到命名异常
-
lookupLink
Object lookupLink(Name name) throws NamingException
检索命名对象,除了名称的终端原子组件之外的链接。 如果绑定到name
的对象不是链接,则返回该对象本身。- 参数
-
name
- 要查找的对象的名称 - 结果
- 绑定到
name
的对象,不遵循终端链接(如果有)。 - 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
lookupLink(String)
-
lookupLink
Object lookupLink(String name) throws NamingException
检索命名对象,除了名称的终端原子组件之外的链接。 有关详细信息,请参阅lookupLink(Name)
。- 参数
-
name
- 要查找的对象的名称 - 结果
- 绑定到
name
的对象,不跟随终端链接(如果有) - 异常
-
NamingException
- 如果遇到命名异常
-
getNameParser
NameParser getNameParser(Name name) throws NamingException
检索与命名上下文关联的解析器。 在命名空间联合中,不同的命名系统将以不同方式解析名称。 此方法允许应用程序使用特定命名系统的命名约定来获取解析器以将名称解析为其原子组件。 在任何单个命名系统中,此方法返回的NameParser
对象必须相等(使用equals()
测试)。- 参数
-
name
- 从中获取解析器的上下文的名称 - 结果
- 一个名称解析器,可以将化合物名称解析为其原子组件
- 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
getNameParser(String)
,CompoundName
-
getNameParser
NameParser getNameParser(String name) throws NamingException
检索与命名上下文关联的解析器。 有关详细信息,请参阅getNameParser(Name)
。- 参数
-
name
- 从中获取解析器的上下文的名称 - 结果
- 一个名称解析器,可以将化合物名称解析为其原子组件
- 异常
-
NamingException
- 如果遇到命名异常
-
composeName
Name composeName(Name name, Name prefix) throws NamingException
使用与此上下文相关的名称组合此上下文的名称。 命名(name
)相对于此上下文,和名称(prefix
这相对于它的一个祖先上下文),则此方法返回使用适合于所涉及的命名系统(S)的语法的两个名字的组成。 也就是说,如果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(String, String)
-
composeName
String composeName(String name, String prefix) throws NamingException
使用与此上下文相关的名称组合此上下文的名称。 有关详细信息,请参阅composeName(Name, Name)
。- 参数
-
name
- 相对于此上下文的名称 -
prefix
- 相对于其祖先之一的此上下文的名称 - 结果
- 组成
prefix
和name
- 异常
-
NamingException
- 如果遇到命名异常
-
addToEnvironment
Object addToEnvironment(String propName, Object propVal) throws NamingException
将新环境属性添加到此上下文的环境中。 如果该属性已存在,则会覆盖其值。 有关环境属性的更多详细信息,请参阅类描述- 参数
-
propName
- 要添加的环境属性的名称; 可能不是null -
propVal
- 要添加的属性的值; 可能不是null - 结果
- 属性的先前值,如果属性不在之前的环境中,则返回null
- 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
getEnvironment()
,removeFromEnvironment(String)
-
removeFromEnvironment
Object removeFromEnvironment(String propName) throws NamingException
从此上下文的环境中删除环境属性。 有关环境属性的更多详细信息,请参阅类描述- 参数
-
propName
- 要删除的环境属性的名称; 可能不是null - 结果
- 属性的先前值,如果属性不在环境中,则返回null
- 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
getEnvironment()
,addToEnvironment(String, Object)
-
getEnvironment
Hashtable<?,?> getEnvironment() throws NamingException
检索对此上下文有效的环境。 有关环境属性的更多详细信息,请参阅类描述调用者不应对返回的对象进行任何更改:它们对上下文的影响是未定义的。 可以使用
addToEnvironment()
和removeFromEnvironment()
更改此上下文的环境。- 结果
- 这种背景的环境; 永远不会
- 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
addToEnvironment(String, Object)
,removeFromEnvironment(String)
-
close
void close() throws NamingException
关闭此背景。 此方法立即释放此上下文的资源,而不是等待垃圾收集器自动释放它们。此方法是幂等的:在已关闭的上下文中调用它无效。 不允许在已关闭的上下文上调用任何其他方法,并导致未定义的行为。
- 异常
-
NamingException
- 如果遇到命名异常
-
getNameInNamespace
String getNameInNamespace() throws NamingException
在其自己的命名空间中检索此上下文的全名。许多命名服务对于各自名称空间中的对象具有“全名”的概念。 例如,LDAP条目具有可分辨名称,DNS记录具有完全限定名称。 此方法允许客户端应用程序检索此名称。 此方法返回的字符串不是JNDI复合名称,不应直接传递给上下文方法。 在全名概念没有意义的命名系统中,抛出
OperationNotSupportedException
。- 结果
- 这个上下文的名称在它自己的命名空间中; 永远不会
- 异常
-
OperationNotSupportedException
- 如果命名系统没有全名的概念 -
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.3
-
-