javax.naming.ldap

接口
异常
java.lang.Object
  继承者 javax.naming.InitialContext
      继承者 javax.naming.directory.InitialDirContext
          继承者 javax.naming.ldap.InitialLdapContext
所有已实现的接口:
Context, DirContext, LdapContext

public class InitialLdapContext
     
extends InitialDirContext
implements LdapContext

此类是执行 LDAPv3 样式的扩展操作和控件的初始上下文。

有关同步的详细信息和如何创建初始上下文的策略,请参阅 javax.naming.InitialContextjavax.naming.InitialDirContext

请求控件

创建初始上下文 ( InitialLdapContext) 时,可以指定请求控件列表。这些控件将用作由上下文或从上下文派生的上下文执行的所有隐式 LDAP“绑定”操作的请求控件。它们被称为 连接请求控件。使用 getConnectControls() 获取上下文的连接请求控件。

提供给初始上下文构造方法的请求控件不能 用作后续上下文操作(如搜索和查找)的上下文请求控件。上下文请求控件可以通过使用 setRequestControls() 设置和更新。

请求控件可以有如下两个与上下文关联的不同集合:连接请求控件和上下文请求控件。对于那些需要发送不能同时应用于上下文操作和任何隐式 LDAP“绑定”操作的关键控件的应用程序而言,这一点是必需的。典型的用户程序将执行以下操作:

 InitialLdapContext lctx = new InitialLdapContext(env, critConnCtls);
 lctx.setRequestControls(critModCtls);
 lctx.modifyAttributes(name, mods);
 Controls[] respCtls =  lctx.getResponseControls();
它首先指定用于创建初始上下文 ( critConnCtls) 的关键控件,然后设置上下文的请求控件 ( critModCtls) 进行上下文操作。如果出于某种原因 lctx 需要重新连接到服务器,则它将使用 critConnCtls。有关请求控件的更多讨论,请参见 LdapContext 接口。

服务提供者的实现方应该参阅 LdapContext 类描述中的 "Service Provider" 一节,以获取实现的详细信息。

从以下版本开始:
1.3
另请参见:
LdapContext, InitialContext, InitialDirContext, NamingManager.setInitialContextFactoryBuilder(javax.naming.spi.InitialContextFactoryBuilder)

字段摘要
 
从类 javax.naming.InitialContext 继承的字段
defaultInitCtx, gotDefault, myProps
 
从接口 javax.naming.ldap.LdapContext 继承的字段
CONTROL_FACTORIES
 
从接口 javax.naming.directory.DirContext 继承的字段
ADD_ATTRIBUTE, REMOVE_ATTRIBUTE, REPLACE_ATTRIBUTE
 
从接口 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
 
构造方法摘要
InitialLdapContext()
          不使用任何环境属性或连接请求控件构造初始上下文。
InitialLdapContext(Hashtable<?,?> environment, Control[] connCtls)
          使用环境属性或连接请求控件构造初始上下文。
 
方法摘要
 ExtendedResponse extendedOperation(ExtendedRequest request)
          执行扩展操作。
 Control[] getConnectControls()
          检索对此上下文有效的连接请求控件。
 Control[] getRequestControls()
          检索对此上下文有效的请求控件。
 Control[] getResponseControls()
          检索对此上下文调用的最后一个方法所生成的响应控件。
 LdapContext newInstance(Control[] reqCtls)
          创建此上下文的新实例,使用请求控件进行初始化。
 void reconnect(Control[] connCtls)
          使用提供的控件和此上下文的环境重新连接到 LDAP 服务器。
 void setRequestControls(Control[] requestControls)
          为在此上下文上后续调用的方法设置请求控件。
 
从类 javax.naming.directory.InitialDirContext 继承的方法
bind, bind, createSubcontext, createSubcontext, getAttributes, getAttributes, getAttributes, getAttributes, getSchema, getSchema, getSchemaClassDefinition, getSchemaClassDefinition, modifyAttributes, modifyAttributes, modifyAttributes, modifyAttributes, rebind, rebind, search, search, search, search, search, search, search, search
 
从类 javax.naming.InitialContext 继承的方法
addToEnvironment, bind, bind, close, composeName, composeName, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, doLookup, doLookup, getDefaultInitCtx, getEnvironment, getNameInNamespace, getNameParser, getNameParser, getURLOrDefaultInitCtx, getURLOrDefaultInitCtx, init, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
从接口 javax.naming.directory.DirContext 继承的方法
bind, bind, createSubcontext, createSubcontext, getAttributes, getAttributes, getAttributes, getAttributes, getSchema, getSchema, getSchemaClassDefinition, getSchemaClassDefinition, modifyAttributes, modifyAttributes, modifyAttributes, modifyAttributes, rebind, rebind, search, search, search, search, search, search, search, search
 
从接口 javax.naming.Context 继承的方法
addToEnvironment, bind, bind, close, composeName, composeName, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, getEnvironment, getNameInNamespace, getNameParser, getNameParser, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind
 

构造方法详细信息

InitialLdapContext

public InitialLdapContext()
                   throws NamingException
不使用任何环境属性或连接请求控件构造初始上下文。与 new InitialLdapContext(null) 等效。

抛出:
NamingException - 如果遇到命名异常

InitialLdapContext

public InitialLdapContext(Hashtable<?,?> environment,
                          Control[] connCtls)
                   throws NamingException
使用环境属性或连接请求控件构造初始上下文。有关环境属性的讨论,请参阅 javax.naming.InitialContext

此构造方法将不修改其参数或保存对它们的引用,但可能保存一个副本。

connCtls 用作基础上下文实例的连接请求控件。有关详细信息请参阅类描述。

参数:
environment - 用于创建初始 DirContext 的环境。null 指示空环境。
connCtls - 初始上下文的连接请求控件。如果为 null,则不使用任何连接请求控件。
抛出:
NamingException - 如果遇到命名异常
另请参见:
reconnect(javax.naming.ldap.Control[]), LdapContext.reconnect(javax.naming.ldap.Control[])
方法详细信息

extendedOperation

public ExtendedResponse extendedOperation(ExtendedRequest request)
                                   throws NamingException
从接口 LdapContext 复制的描述
执行扩展操作。 此方法用于支持 LDAPv3 扩展操作。

指定者:
接口 LdapContext 中的 extendedOperation
参数:
request - 要执行的非 null 请求。
返回:
操作的响应(可能为 null)。null 表示操作没有生成任何响应。
抛出:
NamingException - 如果在执行扩展操作时出错。

newInstance

public LdapContext newInstance(Control[] reqCtls)
                        throws NamingException
从接口 LdapContext 复制的描述
创建此上下文的新实例,使用请求控件进行初始化。 此方法是为了进行多线程访问而创建此上下文新实例的便捷方法。例如,如果多个线程要使用不同的上下文请求控件,则每个线程可以使用此方法获取它自己的此上下文的副本,并设置/获取上下文请求控件,无需与其他线程同步。

新上下文与此上下文具有相同的环境属性和连接请求控件。有关详细信息请参阅类描述。实现可能还允许此上下文和新上下文共享同一个网络连接或其他资源,如果这样做不妨碍这两种上下文各自的独立性。

指定者:
接口 LdapContext 中的 newInstance
参数:
reqCtls - 要用于新上下文的请求控件(可能为 null)。如果为 null,则不使用任何请求控件初始化上下文。
返回:
非 null LdapContext 实例。
抛出:
NamingException - 如果在创建新实例时出错。
另请参见:
InitialLdapContext

reconnect

public void reconnect(Control[] connCtls)
               throws NamingException
从接口 LdapContext 复制的描述
使用提供的控件和此上下文的环境重新连接到 LDAP 服务器。

此方法是一种显式启动 LDAP“绑定”操作的方式。例如,可以使用此方法为 LDAP“绑定”操作设置请求控件,或者显式连接到服务器以获取由 LDAP“绑定”操作返回的响应控件。

此方法将此上下文的 connCtls 设置为其新连接请求控件。此上下文的上下文请求控件将不受影响。调用此方法后,所有后续隐式重接将使用 connCtls 完成。connCtls 还可用作从此上下文派生的新上下文实例的连接请求控件。这些连接请求控件将不受 setRequestControls() 的影响。

服务提供者的实现方应该读取类描述中的“服务提供者”一节,以获取实现详细信息。

指定者:
接口 LdapContext 中的 reconnect
参数:
connCtls - 要使用的控件(可能为 null)。如果为 null,则不使用任何控件。
抛出:
NamingException - 如果重接时出错。
另请参见:
LdapContext.getConnectControls(), LdapContext.newInstance(javax.naming.ldap.Control[])

getConnectControls

public Control[] getConnectControls()
                             throws NamingException
从接口 LdapContext 复制的描述
检索对此上下文有效的连接请求控件。JNDI 实现所拥有的控件是不可变的。调用者既不能修改数组也不能修改控件。

指定者:
接口 LdapContext 中的 getConnectControls
返回:
控件数组(可能为 null)。null 表示没有为此上下文设置任何连接控件。
抛出:
NamingException - 如果在获取请求控件时出错。

setRequestControls

public void setRequestControls(Control[] requestControls)
                        throws NamingException
从接口 LdapContext 复制的描述
为在此上下文上后续调用的方法设置请求控件。JNDI 实现所拥有的请求控件是不可变的。调用者既不能修改数组也不能修改控件。

此操作移除所有以前的请求控件,并添加 requestControls 供在此上下文上调用的后续方法使用。此方法不影响此上下文的连接请求控件。

注意,在下一次调用 setRequestControls() 之前 requestControls 一直有效。如果不想让这些控件继续影响上下文方法,则需要使用 null 或空数组作为参数显式调用 setRequestControls() 来清除它们。要检查对此上下文有效的请求控件,请使用 getRequestControls()

指定者:
接口 LdapContext 中的 setRequestControls
参数:
requestControls - 要使用的控件(可能为 null)。如果为 null,则不使用任何控件。
抛出:
NamingException - 如果在设置请求控件时出错。
另请参见:
LdapContext.getRequestControls()

getRequestControls

public Control[] getRequestControls()
                             throws NamingException
从接口 LdapContext 复制的描述
检索对此上下文有效的请求控件。JNDI 实现所拥有的请求控件是不可变的。调用者既不能修改数组也不能修改控件。

指定者:
接口 LdapContext 中的 getRequestControls
返回:
控件数组(可能为 null)。null 表示没有为此上下文设置任何请求控件。
抛出:
NamingException - 如果在获取请求控件时出错。
另请参见:
LdapContext.setRequestControls(javax.naming.ldap.Control[])

getResponseControls

public Control[] getResponseControls()
                              throws NamingException
从接口 LdapContext 复制的描述
检索对此上下文调用的最后一个方法所生成的响应控件。JNDI 实现所拥有的响应控件是不可变的。调用者既不能修改数组也不能修改控件。

这些响应控件可能由成功或失败的操作生成。

调用可能返回响应控件的上下文方法时,上一个方法调用生成的响应控件将被清除。getResponseControls()(按照从 LDAP 服务器收到响应控件的顺序) 返回上下文方法使用的 LDAP 操作生成的所有响应控件。调用 getResponseControls() 不清除响应控件。在调用可能返回控件的下一个上下文方法之前,可以多次调用它(并返回相同的控件)。

指定者:
接口 LdapContext 中的 getResponseControls
返回:
控件数组(可能为 null)。如果为 null,则对此上下文调用的上一个方法不会生成任何控件。
抛出:
NamingException - 如果在获取响应控件时出错。