public class InitialContext extends Object implements Context
所有的命名操作都是相对于上下文的。初始上下文实现了上下文接口,并提供了用于解析名称的起始点。
当初始语境构建,其环境与传递给构造函数的参数初始化环境定义的属性,在任何application resource files。此外,少数标准JNDI属性可以被指定为系统性能或applet参数(通过Context.APPLET
使用)。这些特殊的性质,在Context和LdapContext接口文档的字段的详细信息部分中列出。
JNDI将从以下两源值确定每个属性的值为:
在运行时确定初始上下文实现。默认的政策利用环境产权”java.naming.factory.initial
”,其中包含了初始上下文工厂类的名称。此策略的一个异常是在解析字符串时作出的,如下面所述。
当一个URL字符串(一个String的形式scheme_id:rest_of_name)是以任何方法名称,参数传递,用于处理方案地用来解决URL上下文工厂。如果没有这样的工厂被发现,由指定的"java.naming.factory.initial"初始上下文使用。同样,当一个CompositeName对象的第一个组件是一个URL字符串作为名称的任何方法的参数传递,URL上下文工厂坐落,用来解决第一名组成。看到一个描述URL上下文工厂位于NamingManager.getURLContext()
。
这种定位的初始上下文和URL上下文工厂默认策略可以通过调用NamingManager.setInitialContextFactoryBuilder()重写。
noinitialcontextexception时引发初始上下文不能实例化。这个例外可以抛出InitialContext任何的互动过程中,不仅构造InitialContext后。例如,该初始上下文的实施可能会检索上下文只有当实际的方法调用它。当确定初始上下文的存在时,应用程序不应该有任何依赖关系。
当环境产权”java。命名。工厂。是非零初始”,InitialContext构造函数将尝试创造规定的初始上下文。在那个时候,如果遇到问题,初始上下文工厂可能会抛出一个异常。然而,它是提供者实现依赖时,它验证和指示用户的初始上下文中的任何环境属性或连接相关的问题。它可以懒洋洋地——延缓直到操作的上下文,执行或急切,在当时的背景下构建。
一个InitialContext实例不同步对多线程并发访问。多个线程中的每个操作不同的InitialContext实例不需要同步。线程需要访问一个InitialContext实例同时应同步自己提供必要的锁。
Context
,
NamingManager.setInitialContextFactoryBuilder
Modifier and Type | Field and Description |
---|---|
protected Context |
defaultInitCtx
田间持namingmanager getinitialcontext()调用的结果。
|
protected boolean |
gotDefault
现场指示初始上下文被称getinitialcontext() namingmanager获得。
|
protected Hashtable<Object,Object> |
myProps
与此相关的环境InitialContext。
|
APPLET, AUTHORITATIVE, BATCHSIZE, DNS_URL, INITIAL_CONTEXT_FACTORY, LANGUAGE, OBJECT_FACTORIES, PROVIDER_URL, REFERRAL, SECURITY_AUTHENTICATION, SECURITY_CREDENTIALS, SECURITY_PRINCIPAL, SECURITY_PROTOCOL, STATE_FACTORIES, URL_PKG_PREFIXES
Modifier | Constructor and Description |
---|---|
|
InitialContext()
构建初始上下文。
|
protected |
InitialContext(boolean lazy)
构造一个不初始化它的期权初始上下文。
|
|
InitialContext(Hashtable<?,?> environment)
使用所提供的环境构造初始上下文。
|
Modifier and Type | Method and Description |
---|---|
Object |
addToEnvironment(String propName, Object propVal)
在这种情况下添加一个新的环境属性。
|
void |
bind(Name name, Object obj)
将一个名称绑定到一个对象。
|
void |
bind(String name, Object obj)
将一个名称绑定到一个对象。
|
void |
close()
关闭此上下文。
|
Name |
composeName(Name name, Name prefix)
在此上下文中与此上下文相关的名称组成此上下文的名称。
|
String |
composeName(String name, String prefix)
在此上下文中与此上下文相关的名称组成此上下文的名称。
|
Context |
createSubcontext(Name name)
创建和绑定一个新的上下文。
|
Context |
createSubcontext(String name)
创建和绑定一个新的上下文。
|
void |
destroySubcontext(Name name)
破坏命名的上下文并从命名空间中移除它。
|
void |
destroySubcontext(String name)
破坏命名的上下文并从命名空间中移除它。
|
static <T> T |
doLookup(Name name)
检索已命名对象的静态方法。
|
static <T> T |
doLookup(String name)
检索已命名对象的静态方法。
|
protected Context |
getDefaultInitCtx()
获取初始上下文的defaultinitctx调用
NamingManager.getInitialContext() 和缓存。
|
Hashtable<?,?> |
getEnvironment()
检索此上下文的效果的环境。
|
String |
getNameInNamespace()
在它自己的命名空间中检索此上下文的完整名称。
|
NameParser |
getNameParser(Name name)
检索与命名上下文关联的语法分析器。
|
NameParser |
getNameParser(String name)
检索与命名上下文关联的语法分析器。
|
protected Context |
getURLOrDefaultInitCtx(Name name)
为解决
name 上下文检索。
|
protected Context |
getURLOrDefaultInitCtx(String name)
检索解决字符串名称
name 上下文。
|
protected void |
init(Hashtable<?,?> environment)
初始化初始上下文使用提供的环境。
|
NamingEnumeration<NameClassPair> |
list(Name name)
枚举名称绑定在指定的背景下,随着束缚他们的对象的类的名称。
|
NamingEnumeration<NameClassPair> |
list(String name)
枚举名称绑定在指定的背景下,随着束缚他们的对象的类的名称。
|
NamingEnumeration<Binding> |
listBindings(Name name)
枚举名称绑定在指定的背景下,随着对象绑定到他们。
|
NamingEnumeration<Binding> |
listBindings(String name)
枚举名称绑定在指定的背景下,随着对象绑定到他们。
|
Object |
lookup(Name name)
检索已命名的对象。
|
Object |
lookup(String name)
检索已命名的对象。
|
Object |
lookupLink(Name name)
检索已命名的对象,除了名称的终端原子组件以外的下列链接。
|
Object |
lookupLink(String name)
检索已命名的对象,除了名称的终端原子组件以外的下列链接。
|
void |
rebind(Name name, Object obj)
绑定一个名字对象,覆盖任何现有的结合。
|
void |
rebind(String name, Object obj)
绑定一个名字对象,覆盖任何现有的结合。
|
Object |
removeFromEnvironment(String propName)
从这个上下文的环境中移除环境属性。
|
void |
rename(Name oldName, Name newName)
绑定了一个新的名字对象绑定到一个古老的名字,和其他老字号。
|
void |
rename(String oldName, String newName)
绑定了一个新的名字对象绑定到一个古老的名字,和其他老字号。
|
void |
unbind(Name name)
其他命名对象。
|
void |
unbind(String name)
其他命名对象。
|
protected Hashtable<Object,Object> myProps
protected Context defaultInitCtx
getDefaultInitCtx()
protected boolean gotDefault
defaultInitCtx
。
protected InitialContext(boolean lazy) throws NamingException
lazy
-真的意味着没有初始化初始上下文;假相当于调用
new InitialContext()
NamingException
-如果遇到一个命名的例外
init(Hashtable)
public InitialContext() throws NamingException
NamingException
-如果遇到一个命名的例外
InitialContext(Hashtable)
public InitialContext(Hashtable<?,?> environment) throws NamingException
此构造函数将不会修改environment或保存参考,但可以节省一个克隆。人不应该修改的键和值在environment在它被传递给构造函数。
environment
环境用于创建初始上下文。空表示一个空的环境。
NamingException
-如果遇到一个命名的例外
protected void init(Hashtable<?,?> environment) throws NamingException
该方法将修改environment并保存一个参考吧。调用方可能不再修改它。
environment
环境用于创建初始上下文。空表示一个空的环境。
NamingException
-如果遇到一个命名的例外
InitialContext(boolean)
public static <T> T doLookup(Name name) throws NamingException
InitialContext ic = new InitialContext(); Object obj = ic.lookup();
如果name为空,返回这方面的一个新实例(代表相同的命名上下文这个语境,但其环境可以独立修改,可以同时访问)。
T
-返回对象的类型
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
doLookup(String)
,
lookup(Name)
public static <T> T doLookup(String name) throws NamingException
doLookup(Name)
详情。
T
-返回对象的类型
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
protected Context getDefaultInitCtx() throws NamingException
NamingManager.getInitialContext()
和缓存。集
gotDefault
使我们知道我们已经尝试过。
NoInitialContextException
初始上下文。
NamingException
-如果遇到一个命名的例外。
protected Context getURLOrDefaultInitCtx(String name) throws NamingException
name
上下文。如果
name
叫URL字符串,然后试图找到它的URL上下文。如果没有,或者如果
name
不是URL字符串,然后返回
getDefaultInitCtx()
。
看到geturlordefaultinitctx(名称)为描述一个类应该使用这种方法。
name
-非空名,获得语境。
name
或URL缓存初始上下文语境。结果不能为空。
NoInitialContextException
初始上下文。
NamingException
-在一个命名的例外是遇到。
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
protected Context getURLOrDefaultInitCtx(Name name) throws NamingException
name
检索上下文。如果
name
名称的第一个组件是一个URL字符串,然后试图找到它的URL上下文。如果没有,或者如果
name
第一分量不是URL字符串,然后返回
getDefaultInitCtx()
。
创建InitialContext子类时,使用此方法如下。定义一个新的方法,使用此方法得到所需子类的初始上下文。
当为子类的新方法的实现,使用这个新定义的方法来获取初始上下文。protected XXXContext getURLOrDefaultInitXXXCtx(Name name) throws NamingException { Context answer = getURLOrDefaultInitCtx(name); if (!(answer instanceof XXXContext)) { if (answer == null) { throw new NoInitialContextException(); } else { throw new NotContextException("Not an XXXContext"); } } return (XXXContext)answer; }
public Object XXXMethod1(Name name, ...) { throws NamingException { return getURLOrDefaultInitXXXCtx(name).XXXMethod1(name, ...); }
name
-非空名,获得语境。
name
或URL缓存初始上下文语境。结果不能为空。
NoInitialContextException
初始上下文。
NamingException
-在一个命名的例外是遇到。
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
public Object lookup(String name) throws NamingException
Context
Context.lookup(Name)
详情。
lookup
接口
Context
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
public Object lookup(Name name) throws NamingException
Context
lookup
接口
Context
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
Context.lookup(String)
,
Context.lookupLink(Name)
public void bind(String name, Object obj) throws NamingException
Context
Context.bind(Name, Object)
详情。
bind
接口
Context
name
-绑定的名称;不能为空
obj
-绑定的对象可能是空的;
NameAlreadyBoundException
如果名字已绑定
InvalidAttributesException
如果对象没有提供所有必需的属性
NamingException
-如果遇到一个命名的例外
public void bind(Name name, Object obj) throws NamingException
Context
bind
接口
Context
name
-绑定的名称;不能为空
obj
-绑定的对象可能是空的;
NameAlreadyBoundException
如果名字已绑定
InvalidAttributesException
如果对象没有提供所有必需的属性
NamingException
-如果遇到一个命名的例外
Context.bind(String, Object)
,
Context.rebind(Name, Object)
,
DirContext.bind(Name, Object, javax.naming.directory.Attributes)
public void rebind(String name, Object obj) throws NamingException
Context
Context.rebind(Name, Object)
详情。
rebind
接口
Context
name
-绑定的名称;不能为空
obj
-绑定的对象可能是空的;
InvalidAttributesException
如果对象没有提供所有必需的属性
NamingException
-如果遇到一个命名的例外
public void rebind(Name name, Object obj) throws NamingException
Context
如果对象是一个DirContext,任何现有的属性相关的名称与对象替换。否则,任何与名称相关联的现有属性保持不变。
rebind
接口
Context
name
-绑定的名称;不能为空
obj
-绑定的对象可能是空的;
InvalidAttributesException
如果对象没有提供所有必需的属性
NamingException
-如果遇到一个命名的例外
Context.rebind(String, Object)
,
Context.bind(Name, Object)
,
DirContext.rebind(Name, Object, javax.naming.directory.Attributes)
,
DirContext
public void unbind(String name) throws NamingException
Context
Context.unbind(Name)
详情。
unbind
接口
Context
name
-绑定的名字;不能为空
NameNotFoundException
如果中间语境不存在
NamingException
-如果遇到一个命名的例外
public void unbind(Name name) throws NamingException
Context
name
--所有但
name
终端原子部分命名。
这种方法是幂等。它的成功即使终端原子的名字是不受约束的在目标范围内,但如果把NameNotFoundException任何中间情况不存在。
与名称相关联的任何属性都被删除。中间上下文没有改变。
unbind
接口
Context
name
-绑定的名字;不能为空
NameNotFoundException
如果中间语境不存在
NamingException
-如果遇到一个命名的例外
Context.unbind(String)
public void rename(String oldName, String newName) throws NamingException
Context
Context.rename(Name, Name)
详情。
rename
接口
Context
oldName
-现有绑定的名称不能为空;
newName
-新的绑定名称不能为空;
NameAlreadyBoundException
已绑定
NamingException
-如果遇到一个命名的例外
public void rename(Name oldName, Name newName) throws NamingException
Context
rename
接口
Context
oldName
-现有绑定的名称不能为空;
newName
-新的绑定名称不能为空;
NameAlreadyBoundException
已绑定
NamingException
-如果遇到一个命名的例外
Context.rename(String, String)
,
Context.bind(Name, Object)
,
Context.rebind(Name, Object)
public NamingEnumeration<NameClassPair> list(String name) throws NamingException
Context
Context.list(Name)
详情。
list
接口
Context
name
-上下文的名称列表
NamingException
-如果遇到一个命名的例外
public NamingEnumeration<NameClassPair> list(Name name) throws NamingException
Context
如果一个绑定被添加到或从这个上下文中删除,它对以前返回的枚举的效果是不确定的。
list
接口
Context
name
-上下文的名称列表
NamingException
-如果遇到一个命名的例外
Context.list(String)
,
Context.listBindings(Name)
,
NameClassPair
public NamingEnumeration<Binding> listBindings(String name) throws NamingException
Context
Context.listBindings(Name)
详情。
listBindings
接口
Context
name
-上下文的名称列表
NamingException
-如果遇到一个命名的例外
public NamingEnumeration<Binding> listBindings(Name name) throws NamingException
Context
如果一个绑定被添加到或从这个上下文中删除,它对以前返回的枚举的效果是不确定的。
listBindings
接口
Context
name
-上下文的名称列表
NamingException
-如果遇到一个命名的例外
Context.listBindings(String)
,
Context.list(Name)
,
Binding
public void destroySubcontext(String name) throws NamingException
Context
Context.destroySubcontext(Name)
详情。
destroySubcontext
接口
Context
name
-上下文名称被破坏;不能为空
NameNotFoundException
如果中间语境不存在
NotContextException
如果名字约束但没有命名上下文,或不适当类型的上下文名称
ContextNotEmptyException
如果命名上下文不空
NamingException
-如果遇到一个命名的例外
public void destroySubcontext(Name name) throws NamingException
Context
这种方法是幂等。它的成功即使终端原子的名字是不受约束的在目标范围内,但如果把NameNotFoundException任何中间情况不存在。
在联合命名系统中,从一个命名系统的上下文可以绑定到另一个命名系统的名称。一个可以随后查找并使用复合名称在外国上下文中执行操作。然而,企图破坏的背景下使用该复合名字会失败的NotContextException,因为国外语境不是“形式”的上下文中,它必然。相反,使用unbind()消除外国背景的结合。破坏外,destroySubcontext()上下文进行上下文从外国背景的“本土”的命名系统。
destroySubcontext
接口
Context
name
-上下文名称被破坏;不能为空
NameNotFoundException
如果中间语境不存在
NotContextException
如果名字约束但没有命名上下文,或不适当类型的上下文名称
ContextNotEmptyException
如果命名上下文不空
NamingException
-如果遇到一个命名的例外
Context.destroySubcontext(String)
public Context createSubcontext(String name) throws NamingException
Context
Context.createSubcontext(Name)
详情。
createSubcontext
接口
Context
name
-创建上下文的名称不能为空;
NameAlreadyBoundException
如果名字已绑定
InvalidAttributesException
如果的形式创作需要强制属性规范
NamingException
-如果遇到一个命名的例外
public Context createSubcontext(Name name) throws NamingException
Context
createSubcontext
接口
Context
name
-创建上下文的名称不能为空;
NameAlreadyBoundException
如果名字已绑定
InvalidAttributesException
如果的形式创作需要强制属性规范
NamingException
-如果遇到一个命名的例外
Context.createSubcontext(String)
,
DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)
public Object lookupLink(String name) throws NamingException
Context
Context.lookupLink(Name)
详情。
lookupLink
接口
Context
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
public Object lookupLink(Name name) throws NamingException
Context
lookupLink
接口
Context
name
-对象的名字查找
NamingException
-如果遇到一个命名的例外
Context.lookupLink(String)
public NameParser getNameParser(String name) throws NamingException
Context
Context.getNameParser(Name)
详情。
getNameParser
接口
Context
name
-从它的上下文的名称让解析器
NamingException
-如果遇到一个命名的例外
public NameParser getNameParser(Name name) throws NamingException
Context
getNameParser
接口
Context
name
-从它的上下文的名称让解析器
NamingException
-如果遇到一个命名的例外
Context.getNameParser(String)
,
CompoundName
public String composeName(String name, String prefix) throws NamingException
composeName
接口
Context
name
-名字这个语境
prefix
-这方面相对于它的一个祖先的名字
prefix
和
name
组成
NamingException
-如果遇到一个命名的例外
public Name composeName(Name name, Name prefix) throws NamingException
composeName
接口
Context
name
-名字相对这个语境
prefix
-这方面相对于它的一个祖先的名字
prefix
和
name
组成
NamingException
-如果遇到一个命名的例外
Context.composeName(String, String)
public Object addToEnvironment(String propName, Object propVal) throws NamingException
Context
addToEnvironment
接口
Context
propName
-要添加的环境属性的名称;不得空
propVal
-属性加值;不得空
NamingException
-如果遇到一个命名的例外
Context.getEnvironment()
,
Context.removeFromEnvironment(String)
public Object removeFromEnvironment(String propName) throws NamingException
Context
removeFromEnvironment
接口
Context
propName
-去除环境属性的名称;不得空
NamingException
-如果遇到一个命名的例外
Context.getEnvironment()
,
Context.addToEnvironment(String, Object)
public Hashtable<?,?> getEnvironment() throws NamingException
Context
调用方不应该对返回的对象进行任何更改:它们对上下文的影响是不确定的。这个上下文环境可以使用addToEnvironment()和removeFromEnvironment()改变。
getEnvironment
接口
Context
NamingException
-如果遇到一个命名的例外
Context.addToEnvironment(String, Object)
,
Context.removeFromEnvironment(String)
public void close() throws NamingException
Context
这种方法是幂等:调用上下文上已经关闭没有影响。在不允许在封闭的上下文中调用任何其他方法,并导致未定义的行为。
close
接口
Context
NamingException
-如果遇到一个命名的例外
public String getNameInNamespace() throws NamingException
Context
许多命名服务有一个“在各自的命名空间对象姓名”的概念。例如,一个LDAP条目有一个著名的名字,和DNS记录有一个完全合格的名称。此方法允许客户端应用程序检索此名称。此方法返回的字符串不是一个JNDI复合名称和不应直接传递到上下文的方法。在命名系统,姓名的概念没有意义,OperationNotSupportedException抛出。
getNameInNamespace
接口
Context
OperationNotSupportedException
如果命名系统没有姓名的概念
NamingException
-如果遇到一个命名的例外
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.