|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.naming
类 InitialContext
java.lang.Object javax.naming.InitialContext
- 所有已实现的接口:
- Context
- 直接已知子类:
- InitialDirContext
此类是执行命名操作的初始上下文。
所有命名操作都相对于某一上下文。该初始上下文实现 Context 接口并提供解析名称的起始点。
在构造初始上下文时,使用传递给构造方法的环境参数中以及所有应用程序资源文件中定义的属性初始化其环境。此外,可以将少数标准 JNDI 属性指定为系统属性或 applet 参数(通过使用 Context.APPLET
)。这些特殊属性列于 Context 和 LdapContext 接口文档的字段详细信息部分。
JNDI 通过按顺序合并取自以下两个源的值来确定每个属性值:
- 构造方法的环境参数、(适当属性的)applet 参数,以及系统属性中最先出现的属性。
- 应用程序资源文件 (jndi.properties)。
初始上下文实现是在运行时确定的。默认策略使用环境属性 "java.naming.factory.initial
",该属性包含初始上下文工厂的类名称。解析 URL 字符串时生成此策略的一个异常,如下所述。
在将 URL 字符串(一个 scheme_id:rest_of_name 形式的 String)作为名称参数传递给任一方法时,将定位处理该方案的一个 URL 上下文工厂,并将它用于解析该 URL。如果没有找到这样的工厂,则使用由 "java.naming.factory.initial" 指定的初始上下文。类似地,当将第一个组件是 URL 字符串的 CompositeName 对象作为名称参数传递给任一方法时,将定位一个 URL 上下文工厂并将它用于解析第一个名称组件。有关如何定位 URL 上下文工厂的描述,请参见 NamingManager.getURLContext()
。
这一定位初始上下文和 URL 上下文工厂的默认策略可以通过调用 NamingManager.setInitialContextFactoryBuilder() 重写。
当无法实例化初始上下文时,将抛出 NoInitialContextException。此异常可以在与 InitialContext 进行的任何交互期间抛出,而不仅仅是在构造 InitialContext 时。例如,初始上下文的实现可能仅当在其上调用实际方法时延后 (lazily) 检索上下文。在确定初始上下文的存在时,应用程序不应该对它有任何依赖性。
当环境属性 "java.naming.factory.initial" 为非 null 值时,InitialContext 构造方法将试着创建在其中指定的初始上下文。此时,如果遇到问题,所涉及的初始上下文工厂可能抛出异常。不过,在验证并向初始上下文用户指示所有与环境属性或连接有关的问题时,这将与提供者的实现有关。提供者也可以以延迟方式做到这一点:延迟到在上下文上执行某一操作时;在更急切的情况下,延迟到构造上下文时。
InitialContext 实例对多个线程的并发访问不同步。对于每个线程都操作一个不同 InitialContext 实例的多个线程而言,无需实现同步。需要并发地访问单个 InitialContext 实例的线程应该在它们之间实现同步并提供必需的锁定。
- 从以下版本开始:
- JNDI 1.1 / Java 2 Platform, Standard Edition, v 1.3
- 另请参见:
-
Context
,NamingManager.setInitialContextFactoryBuilder
字段摘要 | |
---|---|
protected Context |
defaultInitCtx 该字段保存调用 NamingManager.getInitialContext() 的结果。 |
protected boolean |
gotDefault 该字段指示是否已通过调用 NamingManager.getInitialContext() 获得了初始上下文。 |
protected Hashtable<Object,Object> |
myProps 与此 InitialContext 关联的环境。 |
构造方法摘要 | |
---|---|
|
InitialContext() 构造一个初始上下文。 |
protected |
InitialContext(boolean lazy) 构造一个具有不进行初始化的选项的初始上下文。 |
|
InitialContext(Hashtable<?,?> environment) 使用所提供的环境构造一个初始上下文。 |
方法摘要 | |
---|---|
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) 销毁指定上下文,并将它从名称空间中移除。 |
protected Context |
getDefaultInitCtx() 通过调用 NamingManager.getInitialContext() 检索初始上下文,并将它缓存在 defaultInitCtx 中。 |
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) 取消对指定对象的绑定。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
myProps
protected Hashtable<Object,Object> myProps
- 与此 InitialContext 关联的环境。它被初始化为 null,并由接受环境作为参数的构造方法或 init() 方法更新。
defaultInitCtx
protected Context defaultInitCtx
-
该字段保存调用 NamingManager.getInitialContext() 的结果。它由 getDefaultInitCtx() 在第一次调用 getDefaultInitCtx() 时设置。getDefaultInitCtx() 的后续调用返回 defaultInitCtx 的值。
- 另请参见:
-
getDefaultInitCtx()
gotDefault
protected boolean gotDefault
-
该字段指示是否已通过调用 NamingManager.getInitialContext() 获得了初始上下文。如果为 true,则其结果保存在
defaultInitCtx
中。
构造方法详细信息 |
---|
InitialContext
protected InitialContext(boolean lazy) throws NamingException
-
构造一个具有不进行初始化的选项的初始上下文。如果子类在调用 InitialContext 构造方法时仍然未知环境属性的值,则可以在其中使用此构造方法。子类的构造方法将调用此构造方法,计算环境的值,然后在返回之前调用 init()。
- 参数:
-
lazy
- 为 true 表示不初始化该初始上下文;为 false 等效于调用 new InitialContext() - 抛出:
-
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.3
- 另请参见:
-
init(Hashtable)
InitialContext
public InitialContext() throws NamingException
-
构造一个初始上下文。不提供环境属性。与 new InitialContext(null) 等效。
- 抛出:
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
InitialContext(Hashtable)
InitialContext
public InitialContext(Hashtable<?,?> environment) throws NamingException
-
使用所提供的环境构造一个初始上下文。这些环境属性已在类描述中讨论。
此构造方法不会修改 environment 或保存一个对它的引用,但可能保存一个副本。
- 参数:
-
environment
- 用来创建初始上下文的环境。null 指示一个空环境。 - 抛出:
-
NamingException
- 如果遇到命名异常
方法详细信息 |
---|
init
protected void init(Hashtable<?,?> environment) throws NamingException
-
使用所提供的环境初始化初始上下文。这些环境属性已在类描述中讨论。
此方法将修改 environment 并保存一个对它的引用。调用方可能不再修改它。
-
-
- 参数:
-
environment
- 用来创建初始上下文的环境。null 指示一个空环境。 - 抛出:
-
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.3
- 另请参见:
-
InitialContext(boolean)
getDefaultInitCtx
protected Context getDefaultInitCtx() throws NamingException
-
通过调用
NamingManager.getInitialContext()
检索初始上下文,并将它缓存在 defaultInitCtx 中。设置gotDefault
,说明已执行过此操作。 -
-
- 返回:
- 缓存的非 null 初始上下文。
- 抛出:
-
NoInitialContextException
- 如果无法找到初始上下文。 -
NamingException
- 如果遇到命名异常。
getURLOrDefaultInitCtx
protected Context getURLOrDefaultInitCtx(String name) throws NamingException
-
检索用来解析字符串名称
name
的上下文。如果name
名称是一个 URL 字符串,则试着定位一个用于该字符串的 URL 上下文。如果没有找到这样的上下文,或者name
不是一个 URL 字符串,则返回getDefaultInitCtx()
。有关子类应该如何使用此方法的描述,请参见 getURLOrDefaultInitCtx(Name)。
-
-
- 参数:
-
name
- 非 null 名称,将为其获得上下文。 - 返回:
-
用于
name
的 URL 上下文或者缓存的初始上下文。结果不能为 null。 - 抛出:
-
NoInitialContextException
- 如果无法找到初始上下文。 -
NamingException
- 如果遇到命名异常。 - 另请参见:
-
NamingManager.getURLContext(java.lang.String, java.util.Hashtable)