- java.lang.Object
-
- javax.naming.InitialContext
-
- 实现的所有接口
-
Context
- 已知直接子类:
-
InitialDirContext
public class InitialContext extends Object implements Context
此类是执行命名操作的起始上下文。所有命名操作都与上下文相关。 初始上下文实现了Context接口,并提供了解析名称的起点。
构造初始上下文时,将使用传递给构造函数的环境参数中定义的属性以及任何application resource files初始化其环境。
JNDI通过合并以下两个来源的值来确定每个属性的值,顺序如下:
- 构造函数的环境参数和系统属性首次出现该属性。
- 应用程序资源文件(
jndi.properties
)。
Context
),则所有值都将连接到单个以冒号分隔的列表中。 对于其他属性,仅使用找到的第一个值。初始上下文实现在运行时确定。 默认策略使用环境属性“
java.naming.factory.initial
”,其中包含初始上下文工厂的类名。 解析URL字符串时会对此策略执行例外处理,如下所述。当一个URL字符串(
String
形式一个scheme_id的:rest_of_name)作为名称参数传递给任何方法,一个URL上下文工厂处理该方案的定位和用于解析URL。 如果未找到此类工厂,则使用由"java.naming.factory.initial"
指定的初始上下文。 类似地,当第一个组件是URL字符串的CompositeName
对象作为名称参数传递给任何方法时,将找到URL上下文工厂并用于解析第一个名称组件。 有关URL上下文工厂如何定位的说明,请参见NamingManager.getURLContext()
。可以通过调用
NamingManager.setInitialContextFactoryBuilder()
来覆盖此查找初始上下文和URL上下文工厂的默认策略。无法实例化初始上下文时,抛出NoInitialContextException。 在与InitialContext进行任何交互时,不仅在构造InitialContext时,都会抛出此异常。 例如,初始上下文的实现可能仅在对其调用实际方法时才会懒惰地检索上下文。 应用程序不应该确定何时确定初始上下文的存在。
当环境属性“java.naming.factory.initial”为非null时,InitialContext构造函数将尝试创建其中指定的初始上下文。 那时,如果遇到问题,涉及的初始上下文工厂可能会抛出异常。 但是,当它验证并向初始上下文的用户指示任何与环境属性或连接相关的问题时,它依赖于提供程序实现。 它可以懒惰地执行 - 延迟直到对上下文执行操作,或者在构造上下文时急切地执行操作。
InitialContext实例未与多个线程的并发访问同步。 每个操作不同InitialContext实例的多个线程无需同步。 需要同时访问单个InitialContext实例的线程应该在它们之间进行同步并提供必要的锁定。
- 从以下版本开始:
- 1.3,JNDI 1.1
- 另请参见:
-
Context
,NamingManager.setInitialContextFactoryBuilder
-
-
字段汇总
字段 变量和类型 字段 描述 protected Context
defaultInitCtx
字段持有调用NamingManager.getInitialContext()的结果。protected boolean
gotDefault
指示是否已通过调用NamingManager.getInitialContext()获取初始上下文的字段。protected Hashtable<Object,Object>
myProps
与此InitialContext关联的环境。-
Fields declared in interface javax.naming.Context
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
-
-
构造方法摘要
构造方法 变量 构造器 描述 InitialContext()
构造一个初始上下文。protected
InitialContext(boolean lazy)
构造一个初始上下文,可以选择不初始化它。InitialContext(Hashtable<?,?> environment)
使用提供的环境构造初始上下文。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 String
composeName(String name, String prefix)
使用与此上下文相关的名称组合此上下文的名称。Name
composeName(Name name, Name prefix)
使用与此上下文相关的名称组合此上下文的名称。static <T> T
doLookup(String name)
一种检索命名对象的静态方法。static <T> T
doLookup(Name name)
一种检索命名对象的静态方法。protected Context
getDefaultInitCtx()
通过调用NamingManager.getInitialContext()
检索初始上下文并将其缓存在defaultInitCtx中。protected Context
getURLOrDefaultInitCtx(String name)
检索用于解析字符串名称name
的上下文。protected Context
getURLOrDefaultInitCtx(Name name)
检索用于解析name
的上下文。protected void
init(Hashtable<?,?> environment)
使用提供的环境初始化初始上下文。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 javax.naming.Context
addToEnvironment, bind, bind, close, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, getEnvironment, getNameInNamespace, getNameParser, getNameParser, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind
-
-
-
-
字段详细信息
-
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
构造函数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
修改可变键和值。- 参数
-
environment
- 用于创建初始上下文的环境。 Null表示空的环境。 - 异常
-
NamingException
- 如果遇到命名异常
-
-
方法详细信息
-
init
protected void init(Hashtable<?,?> environment) throws NamingException
使用提供的环境初始化初始上下文。 环境属性在类描述中讨论。此方法将修改
environment
并保存对它的引用。 呼叫者可能不再修改它。- 参数
-
environment
- 用于创建初始上下文的环境。 Null表示空的环境。 - 异常
-
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.3
- 另请参见:
-
InitialContext(boolean)
-
doLookup
public static <T> T doLookup(Name name) throws NamingException
一种检索命名对象的静态方法。 这是一个等效于调用的快捷方法:InitialContext ic = new InitialContext(); Object obj = ic.lookup();
如果
name
为空,则返回此上下文的新实例(表示与此上下文相同的命名上下文,但其环境可以单独修改,并且可以同时访问它)。- 参数类型
-
T
- 返回对象的类型 - 参数
-
name
- 要查找的对象的名称 - 结果
-
绑定到
name
的对象 - 异常
-
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.6
- 另请参见:
-
doLookup(String)
,Context.lookup(Name)
-
doLookup
public static <T> T doLookup(String name) throws NamingException
一种检索命名对象的静态方法。 有关详细信息,请参见doLookup(Name)
。- 参数类型
-
T
- 返回对象的类型 - 参数
-
name
- 要查找的对象的名称 - 结果
-
绑定到
name
的对象 - 异常
-
NamingException
- 如果遇到命名异常 - 从以下版本开始:
- 1.6
-
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上下文或缓存的初始上下文。 结果不能为空。 - 异常
-
NoInitialContextException
- 如果找不到初始上下文。 -
NamingException
- 遇到命名异常。 - 另请参见:
-
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
-
getURLOrDefaultInitCtx
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
- 要获取上下文的非null名称。 - 结果
-
name
的URL上下文或缓存的初始上下文。 结果不能为空。 - 异常
-
NoInitialContextException
- 如果找不到初始上下文。 -
NamingException
- 遇到命名异常。 - 另请参见:
-
NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
-
composeName
public String composeName(String name, String prefix) throws NamingException
使用与此上下文相关的名称组合此上下文的名称。 由于初始上下文可能永远不会相对于除其自身之外的任何上下文进行命名,因此prefix
参数的值必须为空名称(""
)。- Specified by:
-
composeName
,界面Context
- 参数
-
name
- 相对于此上下文的名称 -
prefix
- 相对于其祖先之一的此上下文的名称 - 结果
-
组成
prefix
和name
- 异常
-
NamingException
- 如果遇到命名异常
-
composeName
public Name composeName(Name name, Name prefix) throws NamingException
使用与此上下文相关的名称组合此上下文的名称。 由于初始上下文可能永远不会相对于除其自身之外的任何上下文进行命名,因此prefix
参数的值必须为空名称。- Specified by:
-
composeName
接口Context
- 参数
-
name
- 相对于此上下文的名称 -
prefix
- 相对于其祖先之一的此上下文的名称 - 结果
-
组成
prefix
和name
- 异常
-
NamingException
- 如果遇到命名异常 - 另请参见:
-
Context.composeName(String, String)
-
-