public interface LdapContext
此接口表示一个上下文,在该上下文中可以利用 LDAPv3 样式的控件执行操作,并且可以执行 LDAPv3 样式的扩展操作。 对于不需要这些控件或扩展操作的应用程序,则应该使用更一般的 javax.naming.directory.DirContext 来代替。
请求控件有两种类型:
如果没有显式限定,术语“请求控件”就是指上下文请求控件。
与环境属性不同,从某个上下文实例派生的上下文实例不能继承 它的请求控件。派生的上下文实例的上下文请求控件为 null。必须使用 setRequestControls() 显式设置派生的上下文实例的请求控件。
上下文实例的请求控件需要使用方法 getRequestControls() 进行检索。
与环境属性一样,从上下文派生的上下文可以继承 它的连接请求控件。通常,使用 InitialLdapContext 构造方法或 LdapReferralContext.getReferralContext() 来初始化连接请求控件。这些连接请求控件可以由共享同一连接的上下文继承,即上下文是从初始或引用上下文派生的。
使用 reconnect() 更改上下文的连接请求控件。调用 ldapContext.reconnect() 仅影响 ldapContext 使用的连接和从 ldapContext 派生的所有新上下文实例。以前与 ldapContext 共享连接的上下文保持不变。即上下文的连接请求控件必须显式更改,更改另一个上下文的连接请求控件对它没有影响。
上下文实例的连接请求控件需要使用方法 getConnectControls() 进行检索。
InitialLdapContext
,
LdapReferralException.getReferralContext(java.util.Hashtable,javax.naming.ldap.Control[])
字段摘要 | |
---|---|
static String |
CONTROL_FACTORIES 该常量保存用来指定要使用的控件工厂列表的环境属性名称。 |
从接口 javax.naming.directory.DirContext 继承的字段 |
---|
ADD_ATTRIBUTE, REMOVE_ATTRIBUTE, REPLACE_ATTRIBUTE |
方法摘要 | |
---|---|
ExtendedResponse |
extendedOperation(ExtendedRequest request) 执行扩展操作。 |
Control[] |
getConnectControls() 检索对此上下文有效的连接请求控件。 |
Control[] |
getRequestControls() 检索对此上下文有效的请求控件。 |
Control[] |
getResponseControls() 检索对此上下文调用的最后一个方法所生成的响应控件。 |
LdapContext |
newInstance(Control[] requestControls) 创建此上下文的新实例,使用请求控件进行初始化。 |
void |
reconnect(Control[] connCtls) 使用提供的控件和此上下文的环境重新连接到 LDAP 服务器。 |
void |
setRequestControls(Control[] requestControls) 为在此上下文上后续调用的方法设置请求控件。 |
从接口 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 |
字段详细信息 |
---|
static final String CONTROL_FACTORIES
此常量的值是 "java.naming.factory.control"。
方法详细信息 |
---|
ExtendedResponse extendedOperation(ExtendedRequest request) throws NamingException
request
- 要执行的非 null 请求。
NamingException
- 如果在执行扩展操作时出错。
LdapContext newInstance(Control[] requestControls) throws NamingException
新上下文与此上下文具有相同的环境属性和连接请求控件。有关详细信息请参阅类描述。实现可能还允许此上下文和新上下文共享同一个网络连接或其他资源,如果这样做不妨碍这两种上下文各自的独立性。
requestControls
- 要用于新上下文的请求控件(可能为 null)。如果为 null,则不使用任何请求控件初始化上下文。
NamingException
- 如果在创建新实例时出错。
InitialLdapContext
void reconnect(Control[] connCtls) throws NamingException
此方法是一种显式启动 LDAP“绑定”操作的方式。例如,可以使用此方法为 LDAP“绑定”操作设置请求控件,或者显式连接到服务器以获取由 LDAP“绑定”操作返回的响应控件。
此方法将此上下文的 connCtls 设置为其新连接请求控件。此上下文的上下文请求控件将不受影响。调用此方法后,所有后续隐式重接将使用 connCtls 完成。connCtls 还可用作从此上下文派生的新上下文实例的连接请求控件。这些连接请求控件将不受 setRequestControls() 的影响。
服务提供者的实现方应该读取类描述中的“服务提供者”一节,以获取实现详细信息。
connCtls
- 要使用的控件(可能为 null)。如果为 null,则不使用任何控件。
NamingException
- 如果重接时出错。
getConnectControls()
,
newInstance(javax.naming.ldap.Control[])
Control[] getConnectControls() throws NamingException
NamingException
- 如果在获取请求控件时出错。
void setRequestControls(Control[] requestControls) throws NamingException
此操作移除所有以前的请求控件,并添加 requestControls 供在此上下文上调用的后续方法使用。此方法不影响此上下文的连接请求控件。
注意,在下一次调用 setRequestControls() 之前 requestControls 一直有效。如果不想让这些控件继续影响上下文方法,则需要使用 null 或空数组作为参数显式调用 setRequestControls() 来清除它们。要检查对此上下文有效的请求控件,请使用 getRequestControls()。
requestControls
- 要使用的控件(可能为 null)。如果为 null,则不使用任何控件。
NamingException
- 如果在设置请求控件时出错。
getRequestControls()
Control[] getRequestControls() throws NamingException
NamingException
- 如果在获取请求控件时出错。
setRequestControls(javax.naming.ldap.Control[])
Control[] getResponseControls() throws NamingException
这些响应控件可能由成功或失败的操作生成。
调用可能返回响应控件的上下文方法时,上一个方法调用生成的响应控件将被清除。getResponseControls()(按照从 LDAP 服务器收到响应控件的顺序) 返回上下文方法使用的 LDAP 操作生成的所有响应控件。调用 getResponseControls() 不清除响应控件。在调用可能返回控件的下一个上下文方法之前,可以多次调用它(并返回相同的控件)。
NamingException
- 如果在获取响应控件时出错。