JavaTM Platform
Standard Ed. 6

javax.naming
类 InitialContext

java.lang.Object
  继承者 javax.naming.InitialContext
所有已实现的接口:
Context
直接已知子类:
InitialDirContext

public class InitialContext
     
extends Object
implements Context

此类是执行命名操作的初始上下文。

所有命名操作都相对于某一上下文。该初始上下文实现 Context 接口并提供解析名称的起始点。

在构造初始上下文时,使用传递给构造方法的环境参数中以及所有应用程序资源文件中定义的属性初始化其环境。此外,可以将少数标准 JNDI 属性指定为系统属性或 applet 参数(通过使用 Context.APPLET)。这些特殊属性列于 ContextLdapContext 接口文档的字段详细信息部分。

JNDI 通过按顺序合并取自以下两个源的值来确定每个属性值:

  1. 构造方法的环境参数、(适当属性的)applet 参数,以及系统属性中最先出现的属性。
  2. 应用程序资源文件 (jndi.properties)。
对于同时存在于两个源或多个应用程序资源文件中的每个属性,用以下方式确定属性值。如果该属性是指定 JNDI 工厂列表的标准 JNDI 属性之一(参见 Context),则所有值都被串联成一个以冒号分隔的列表。对于其他属性,只使用最先找到的值。

初始上下文实现是在运行时确定的。默认策略使用环境属性 "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 时。例如,初始上下文的实现可能仅当在其上调用实际方法时惰性获取上下文。当确定初始上下文存在时,应用程序不应该对它有任何依赖性。

当环境属性 "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 关联的环境。
 
从接口 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)
          使用所提供的环境构造一个初始上下文。
 
方法摘要
 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()
          通过调用 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() 方法更新。

另请参见:
addToEnvironment(java.lang.String, java.lang.Object), removeFromEnvironment(java.lang.String), getEnvironment()

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)

doLookup

public static <T> T doLookup(Name name)
                  throws NamingException
获取指定对象的静态方法。 此方法是一个快捷方法,等效于调用:

InitialContext ic = new InitialContext(); Object obj = ic.lookup();

如果 name 为空,则返回此上下文的一个新实例(该实例表示与此上下文相同的命名上下文,但可以独立地修改其环境,并可以并发地访问)。

参数:
name - 要查找的对象名称
返回:
绑定到 name 的对象
抛出:
NamingException - 如果遇到命名异常
从以下版本开始:
1.6
另请参见:
doLookup(String), lookup(Name)

doLookup

public static <T> T doLookup(String name)
                  throws NamingException
获取指定对象的静态方法。 有关详细信息请参见 doLookup(Name)

参数:
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 上下文或者缓存的初始上下文。结果不能为 null。
抛出:
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 上下文或者缓存的初始上下文。结果不能为 null。
抛出:
NoInitialContextException - 如果无法找到初始上下文。
NamingException - 如果遇到命名异常。
另请参见:
NamingManager.getURLContext(java.lang.String, java.util.Hashtable )

lookup

public Object lookup(String name)
              throws NamingException
从接口 Context 复制的描述
检索指定的对象。有关详细信息请参见 Context.lookup(Name)

指定者:
接口 Context 中的 lookup
参数:
name - 要查询的对象的名称
返回:
绑定到 name 的对象
抛出:
NamingException - 如果遇到命名异常

lookup

public Object lookup(Name name)
              throws NamingException
从接口 Context 复制的描述
检索指定的对象。如果 name 为空,则返回此上下文的一个新实例(该实例表示与此上下文相同的命名上下文,但其环境可以独立地进行修改,而且可以并发访问)。

指定者:
接口 Context 中的 lookup
参数:
name - 要查询的对象的名称
返回:
绑定到 name 的对象
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.lookup(String), Context.lookupLink(Name)

bind

public void bind(String name,
                 Object obj)
          throws NamingException
从接口 Context 复制的描述
将名称绑定到对象。有关详细信息请参见 Context.bind(Name, Object)

指定者:
接口 Context 中的 bind
参数:
name - 要绑定的名称,不可以为空
obj - 要绑定的对象,可能为 null
抛出:
NameAlreadyBoundException - 如果已经绑定了 name
InvalidAttributesException - 如果对象不支持所有强制属性
NamingException - 如果遇到命名异常

bind

public void bind(Name name,
                 Object obj)
          throws NamingException
从接口 Context 复制的描述
将名称绑定到对象。所有中间上下文和目标上下文(由该名称最终原子组件以外的其他所有组件指定)都必须已经存在。

指定者:
接口 Context 中的 bind
参数:
name - 要绑定的名称,不可以为空
obj - 要绑定的对象,可能为 null
抛出:
NameAlreadyBoundException - 如果已经绑定了 name
InvalidAttributesException - 如果对象不支持所有强制属性
NamingException - 如果遇到命名异常
另请参见:
Context.bind(String, Object), Context.rebind(Name, Object), DirContext.bind(Name, Object, javax.naming.directory.Attributes)

rebind

public void rebind(String name,
                   Object obj)
            throws NamingException
从接口 Context 复制的描述
将名称绑定到对象,重写所有现有绑定。有关详细信息请参见 Context.rebind(Name, Object)

指定者:
接口 Context 中的 rebind
参数:
name - 要绑定的名称,不可以为空
obj - 要绑定的对象,可能为 null
抛出:
InvalidAttributesException - 如果对象不支持所有强制属性
NamingException - 如果遇到命名异常

rebind

public void rebind(Name name,
                   Object obj)
            throws NamingException
从接口 Context 复制的描述
将名称绑定到对象,重写任何现有绑定。所有中间上下文和目标上下文(由该名称最终原子组件以外的其他所有组件指定)都必须已经存在。

如果该对象是一个 DirContext,则使用该对象的属性替换与该名称关联的所有现有属性。否则,与该名称关联的所有现有属性保持不变。

指定者:
接口 Context 中的 rebind
参数:
name - 要绑定的名称,不可以为空
obj - 要绑定的对象,可能为 null
抛出:
InvalidAttributesException - 如果对象不支持所有强制属性
NamingException - 如果遇到命名异常
另请参见:
Context.rebind(String, Object), Context.bind(Name, Object), DirContext.rebind(Name, Object, javax.naming.directory.Attributes), DirContext

unbind

public void unbind(String name)
            throws NamingException
从接口 Context 复制的描述
取消对指定对象的绑定。有关详细信息请参见 Context.unbind(Name)

指定者:
接口 Context 中的 unbind
参数:
name - 要取消绑定的名称,不能为空
抛出:
NameNotFoundException - 如果不存在中间上下文
NamingException - 如果遇到命名异常

unbind

public void unbind(Name name)
            throws NamingException
从接口 Context 复制的描述
取消对指定对象的绑定。从目标上下文中移除名为 name 的最终原子名称,目标上下文由 name 的最终原子部分以外的所有名称指定。

此方法是幂等的 (idempotent)。即使最终原子名称没有绑定在目标上下文中,该操作也能成功,但如果不存在任何中间上下文,则将抛出 NameNotFoundException

所有与该名称关联的属性都被移除。不更改中间上下文。

指定者:
接口 Context 中的 unbind
参数:
name - 要取消绑定的名称,不能为空
抛出:
NameNotFoundException - 如果不存在中间上下文
NamingException - 如果遇到命名异常
另请参见:
Context.unbind(String)

rename

public void rename(String oldName,
                   String newName)
            throws NamingException
从接口 Context 复制的描述
将一个新名称绑定到已经被绑定到某一旧名称的对象上,并取消对旧名称的绑定。有关详细信息请参见 Context.rename(Name, Name)

指定者:
接口 Context 中的 rename
参数:
oldName - 现有绑定的名称,不能为空
newName - 新绑定的名称,不能为空
抛出:
NameAlreadyBoundException - 如果已经绑定了 newName
NamingException - 如果遇到命名异常

rename

public void rename(Name oldName,
                   Name newName)
            throws NamingException
从接口 Context 复制的描述
将一个新名称绑定到已经被绑定到某一旧名称的对象上,并取消对旧名称的绑定。两个名称都是相对于此上下文的。所有与旧名称关联的属性都改为与新名称关联。不更改旧名称的中间上下文。

指定者:
接口 Context 中的 rename
参数:
oldName - 现有绑定的名称,不能为空
newName - 新绑定的名称,不能为空
抛出:
NameAlreadyBoundException - 如果已经绑定了 newName
NamingException - 如果遇到命名异常
另请参见:
Context.rename(String, String), Context.bind(Name, Object), Context.rebind(Name, Object)

list

public NamingEnumeration<NameClassPair> list(String name)
                                      throws NamingException
从接口 Context 复制的描述
枚举绑定在指定上下文中的名称,以及绑定到这些名称的对象的类名称。有关详细信息请参见 Context.list(Name)

指定者:
接口 Context 中的 list
参数:
name - 要列出的上下文的名称
返回:
名称和此上下文中的绑定的类名称所组成的枚举。每个枚举元素都属于 NameClassPair 类型。
抛出:
NamingException - 如果遇到命名异常

list

public NamingEnumeration<NameClassPair> list(Name name)
                                      throws NamingException
从接口 Context 复制的描述
枚举绑定在指定上下文中的名称,以及绑定到这些名称的对象的类名称。不包括任何子上下文的内容。

如果将某一绑定添加到此上下文,或者从此上下文中移除某个绑定,则对以前返回的枚举的影响是不确定的。

指定者:
接口 Context 中的 list
参数:
name - 要列出的上下文的名称
返回:
名称和此上下文中的绑定的类名称所组成的枚举。每个枚举元素都属于 NameClassPair 类型。
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.list(String), Context.listBindings(Name), NameClassPair

listBindings

public NamingEnumeration<Binding> listBindings(String name)
                                        throws NamingException
从接口 Context 复制的描述
枚举绑定在指定上下文中的名称,以及绑定到这些名称的对象。有关详细信息请参见 Context.listBindings(Name)

指定者:
接口 Context 中的 listBindings
参数:
name - 要列出的上下文的名称
返回:
此上下文中的绑定所组成的枚举。每个枚举元素都属于 Binding 类型。
抛出:
NamingException - 如果遇到命名异常

listBindings

public NamingEnumeration<Binding> listBindings(Name name)
                                        throws NamingException
从接口 Context 复制的描述
枚举绑定在指定上下文中的名称,以及绑定到这些名称的对象。不包括任何子上下文的内容。

如果将某一绑定添加到此上下文,或者从此上下文中移除某个绑定,则对以前返回的枚举的影响是不确定的。

指定者:
接口 Context 中的 listBindings
参数:
name - 要列出的上下文的名称
返回:
此上下文中的绑定所组成的枚举。每个枚举元素都属于 Binding 类型。
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.listBindings(String), Context.list(Name), Binding

destroySubcontext

public void destroySubcontext(String name)
                       throws NamingException
从接口 Context 复制的描述
销毁指定上下文,并将它从名称空间中移除。有关详细信息请参见 Context.destroySubcontext(Name)

指定者:
接口 Context 中的 destroySubcontext
参数:
name - 要销毁的上下文的名称,不能为空
抛出:
NameNotFoundException - 如果不存在中间上下文
NotContextException - 如果该名称被绑定,但它没有指定一个上下文,或者它没有指定适当类型的上下文
ContextNotEmptyException - 如果指定的上下文不为空
NamingException - 如果遇到命名异常

destroySubcontext

public void destroySubcontext(Name name)
                       throws NamingException
从接口 Context 复制的描述
销毁指定上下文,并将它从名称空间中移除。所有与该名称关联的属性也被移除。不销毁中间上下文。

此方法是幂等的。即使最终原子名称没有绑定在目标上下文中,该操作也能成功,但如果不存在任何中间上下文,则将抛出 NameNotFoundException

在联合命名系统中,取自某一命名系统的上下文可以绑定到另一个命名系统中的名称上。随后可以使用复合名称在外部上下文 (foreign context) 中查询和执行操作。不过,试图使用此复合名称销毁上下文将失败并抛出 NotContextException,因为外部上下文不是绑定该复合名称的上下文的子上下文。改为使用 unbind() 移除外部上下文的绑定。销毁外部上下文需要对取自该外部上下文的“本机”命名系统的上下文执行 destroySubcontext()

指定者:
接口 Context 中的 destroySubcontext
参数:
name - 要销毁的上下文的名称,不能为空
抛出:
NameNotFoundException - 如果不存在中间上下文
NotContextException - 如果该名称被绑定,但它没有指定一个上下文,或者它没有指定适当类型的上下文
ContextNotEmptyException - 如果指定的上下文不为空
NamingException - 如果遇到命名异常
另请参见:
Context.destroySubcontext(String)

createSubcontext

public Context createSubcontext(String name)
                         throws NamingException
从接口 Context 复制的描述
创建并绑定一个新上下文。有关详细信息请参见 Context.createSubcontext(Name)

指定者:
接口 Context 中的 createSubcontext
参数:
name - 要创建的上下文的名称,不能为空
返回:
新创建的上下文。
抛出:
NameAlreadyBoundException - 如果已经绑定了 name
InvalidAttributesException - 如果创建子上下文需要指定强制属性
NamingException - 如果遇到命名异常

createSubcontext

public Context createSubcontext(Name name)
                         throws NamingException
从接口 Context 复制的描述
创建并绑定一个新上下文。使用给定名称创建一个新上下文,并将它绑定在目标上下文中(由该名称最终原子组件以外的所有名称指定)。所有中间上下文和目标上下文都必须已经存在。

指定者:
接口 Context 中的 createSubcontext
参数:
name - 要创建的上下文的名称,不能为空
返回:
新创建的上下文。
抛出:
NameAlreadyBoundException - 如果已经绑定了 name
InvalidAttributesException - 如果创建子上下文需要指定强制属性
NamingException - 如果遇到命名异常
另请参见:
Context.createSubcontext(String), DirContext.createSubcontext(javax.naming.Name, javax.naming.directory.Attributes)

lookupLink

public Object lookupLink(String name)
                  throws NamingException
从接口 Context 复制的描述
按照除名称的最终原子组件以外的链接检索指定对象。有关详细信息请参见 Context.lookupLink(Name)

指定者:
接口 Context 中的 lookupLink
参数:
name - 要查询的对象的名称
返回:
绑定到 name 的对象不遵从最终链接(如果有)
抛出:
NamingException - 如果遇到命名异常

lookupLink

public Object lookupLink(Name name)
                  throws NamingException
从接口 Context 复制的描述
按照除名称的最终原子组件以外的链接检索指定对象。如果绑定到 name 的对象不是一个链接,则返回该对象本身。

指定者:
接口 Context 中的 lookupLink
参数:
name - 要查询的对象的名称
返回:
绑定到 name 的对象不遵从最终链接(如果有)。
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.lookupLink(String)

getNameParser

public NameParser getNameParser(String name)
                         throws NamingException
从接口 Context 复制的描述
检索与指定上下文关联的解析器。有关详细信息请参见 Context.getNameParser(Name)

指定者:
接口 Context 中的 getNameParser
参数:
name - 从中获得解析器的上下文的名称
返回:
可以将组合名称解析成其原子组件的名称解析器
抛出:
NamingException - 如果遇到命名异常

getNameParser

public NameParser getNameParser(Name name)
                         throws NamingException
从接口 Context 复制的描述
检索与指定上下文关联的解析器。在联合名称空间中,不同的命名系统将以不同的方式解析名称。此方法允许应用程序使用特定命名系统的命名约定获得用来将名称解析成其原子组件的解析器。在任意一个命名系统中,由此方法返回的 NameParser 对象必须相等(可使用 equals() 进行测试)。

指定者:
接口 Context 中的 getNameParser
参数:
name - 从中获得解析器的上下文的名称
返回:
可以将组合名称解析成其原子组件的名称解析器
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.getNameParser(String), CompoundName

composeName

public String composeName(String name,
                          String prefix)
                   throws NamingException
将此上下文的名称与相对于此上下文的名称组合。因为绝不能相对于除本身以外的任何上下文命名初始上下文,所以 prefix 参数的值必须是一个空名称 ( "")。

指定者:
接口 Context 中的 composeName
参数:
name - 相对于此上下文的名称
prefix - 此上下文相对于其一个祖先的名称
返回:
prefixname 的组合
抛出:
NamingException - 如果遇到命名异常

composeName

public Name composeName(Name name,
                        Name prefix)
                 throws NamingException
将此上下文的名称与相对于此上下文的名称组合。因为绝不能相对于除本身以外的任何上下文命名初始上下文,所以 prefix 参数的值必须是一个空名称 ( "")。

指定者:
接口 Context 中的 composeName
参数:
name - 相对于此上下文的名称
prefix - 此上下文相对于其一个祖先的名称
返回:
prefixname 的组合
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.composeName(String, String)

addToEnvironment

public Object addToEnvironment(String propName,
                               Object propVal)
                        throws NamingException
从接口 Context 复制的描述
将一个新环境属性添加到此上下文的环境中。如果该属性已经存在,则重写该属性的值。有关环境属性的更多详细信息,请参阅类描述。

指定者:
接口 Context 中的 addToEnvironment
参数:
propName - 要添加的环境属性的名称,不能为 null
propVal - 要添加的属性的值,不能为 null
返回:
该属性以前的值,如果该属性以前不在此环境中,则返回 null
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.getEnvironment(), Context.removeFromEnvironment(String)

removeFromEnvironment

public Object removeFromEnvironment(String propName)
                             throws NamingException
从接口 Context 复制的描述
从此上下文的环境中移除一个环境属性。有关环境属性的更多详细信息,请参阅类描述。

指定者:
接口 Context 中的 removeFromEnvironment
参数:
propName - 要移除的环境属性的名称,不能为 null
返回:
该属性以前的值,如果该属性以前不在此环境中,则返回 null
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.getEnvironment(), Context.addToEnvironment(String, Object)

getEnvironment

public Hashtable<?,?> getEnvironment()
                              throws NamingException
从接口 Context 复制的描述
检索对此上下文有效的环境。有关环境属性的更多详细信息,请参阅类描述。

调用者不应对返回的对象进行任何更改:因为这些更改对于上下文的影响是不确定的。可以使用 addToEnvironment()removeFromEnvironment() 更改此上下文的环境。

指定者:
接口 Context 中的 getEnvironment
返回:
此上下文的环境,决不能为 null
抛出:
NamingException - 如果遇到命名异常
另请参见:
Context.addToEnvironment(String, Object), Context.removeFromEnvironment(String)

close

public void close()
           throws NamingException
从接口 Context 复制的描述
关闭此上下文。此方法立即释放此上下文的资源,而不是等待垃圾回收器自动释放它们。

此方法是幂等的:对已经关闭的上下文调用此方法无效。对已关闭的上下文调用其他任何方法都是不允许的,这会导致不确定的行为。

指定者:
接口 Context 中的 close
抛出:
NamingException - 如果遇到命名异常

getNameInNamespace

public String getNameInNamespace()
                          throws NamingException
从接口 Context 复制的描述
在此上下文自己的名称空间中检索其完全名称。

许多命名服务都有一个“完全名称”的概念,用于其各自的名称空间中的对象。例如,LDAP 项有一个独特的名称,而 DNS 记录有一个完全限定名。此方法允许客户端应用程序检索此名称。此方法返回的字符串不是一个 JNDI 复合名称,不应将它直接传递给上下文方法。在没有完全名称概念的命名系统中,将抛出 OperationNotSupportedException

指定者:
接口 Context 中的 getNameInNamespace
返回:
此上下文在其自己的名称空间中的名称,决不能为 null
抛出:
OperationNotSupportedException - 如果命名系统没有完全名称的概念
NamingException - 如果遇到命名异常

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策