public interface LdapContext extends DirContext
有两种类型的请求控制:
除非明确限定,否则术语“请求控件”是指上下文请求控件。
与环境属性不同,上下文实例的请求控制不会由从其派生的上下文实例继承。 派生上下文实例具有null作为其上下文请求控件。 您必须使用setRequestControls()明确设置派生上下文实例的请求控制。
使用方法getRequestControls()检索上下文实例的请求控件。
与环境属性一样,上下文的连接请求控制由从其导出的上下文继承。 通常,您使用InitialLdapContext构造函数或LdapReferralContext.getReferralContext()初始化连接请求控件。 这些连接请求控件由共享相同连接的上下文继承,即从初始或引用上下文派生的上下文。
使用reconnect()更改上下文的连接请求控件。 调用ldapContext.reconnect()仅影响ldapContext使用的连接以及从ldapContext派生的任何新的上下文实例 。 之前与ldapContext共享连接的上下文保持不变。 也就是说,上下文的连接请求控件必须显式更改,并且不受另一个上下文的连接请求控件的更改的影响。
使用方法getConnectControls()检索上下文实例的连接请求控件。
Modifier and Type | Field and Description |
---|---|
static String |
CONTROL_FACTORIES
用于指定要使用的控制工厂列表的环境属性的名称的常量。
|
ADD_ATTRIBUTE, REMOVE_ATTRIBUTE, REPLACE_ATTRIBUTE
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
Modifier and Type | Method and Description |
---|---|
ExtendedResponse |
extendedOperation(ExtendedRequest request)
执行扩展操作。
|
Control[] |
getConnectControls()
检索此上下文的连接请求控件。
|
Control[] |
getRequestControls()
检索对该上下文有效的请求控件。
|
Control[] |
getResponseControls()
检索由此上下文调用的最后一个方法生成的响应控件。
|
LdapContext |
newInstance(Control[] requestControls)
创建使用请求控件初始化的此上下文的新实例。
|
void |
reconnect(Control[] connCtls)
使用提供的控件和此上下文的环境重新连接到LDAP服务器。
|
void |
setRequestControls(Control[] requestControls)
设置随后在此上下文中调用的方法的请求控件。
|
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
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
- 要执行的非空请求。
NamingException
- 执行扩展操作时是否发生错误。
LdapContext newInstance(Control[] requestControls) throws NamingException
新上下文具有与上下文相同的环境属性和连接请求控件。 有关详细信息,请参阅课程说明。 如果这样做,实现也可能允许这个上下文和新的上下文共享相同的网络连接或其他资源,而不会妨碍任一上下文的独立性。
requestControls
- 用于新上下文的可能的空请求控件。
如果为空,则无需请求控制即可初始化上下文。
NamingException
- 创建新实例时是否发生错误。
InitialLdapContext
void reconnect(Control[] connCtls) throws NamingException
此方法是显式启动LDAP“绑定”操作的一种方法。 例如,您可以使用此方法设置LDAP“绑定”操作的请求控制,或者显式连接到服务器以获取LDAP“绑定”操作返回的响应控件。
该方法将此上下文的connCtls设置为其新的连接请求控件。 此上下文的上下文请求控件不受影响。 在调用此方法之后,任何后续的隐式重新连接将使用connCtls完成。 connCtls也被用作从这个上下文导出的新上下文实例的连接请求控制。 这些连接请求控制不受setRequestControls()的影响。
服务提供商的实现者应该在类描述中阅读“服务提供者”部分,了解实现细节。
connCtls
- 可能使用的空控件。
如果为空,则不使用控件。
NamingException
- 如果重新连接时发生错误。
getConnectControls()
,
newInstance(javax.naming.ldap.Control[])
Control[] getConnectControls() throws NamingException
NamingException
- 如果在获取请求控件时发生错误。
void setRequestControls(Control[] requestControls) throws NamingException
这将删除任何先前的请求控件,并添加requestControls以便在此上下文中调用的后续方法使用。 此方法不影响此上下文的连接请求控件。
请注意, requestControls将有效直到下一次调用setRequestControls() 。 您需要显式调用setRequestControls()与null空数组来清除控件,如果你不希望他们更多地影响上下文方法。 要检查哪些请求控件对此上下文有效,请使用getRequestControls() 。
requestControls
- 可能使用的空控件。
如果为空,则不使用控件。
NamingException
- 如果在设置请求控件时发生错误。
getRequestControls()
Control[] getRequestControls() throws NamingException
NamingException
- 如果在获取请求控件时发生错误。
setRequestControls(javax.naming.ldap.Control[])
Control[] getResponseControls() throws NamingException
这些响应控制可能是由成功或失败的操作生成的。
当调用可能返回响应控件的上下文方法时,将清除来自先前方法调用的响应控制。 getResponseControls()以从LDAP服务器接收的顺序返回由上下文方法使用的LDAP操作生成的所有响应控件。 调用getResponseControls()不会清除响应控件。 您可以多次调用它(并返回相同的控件),直到调用可能返回控件的下一个上下文方法。
NamingException
- 如果在获取响应控件时发生错误。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.