- 所有父级接口:
Context
- 所有已知的子接口:
EventDirContext
,LdapContext
- 所有已知的实现类:
InitialDirContext
,InitialLdapContext
名称
作为参数传递给DirContext
方法的每个名称都与该上下文相关。空名称用于命名上下文本身。名称参数永远不能为空。
大多数方法都有重载版本,一种采用 Name
参数,一种采用 String
参数。这些重载版本是等效的,因为如果 Name
和 String
参数只是同名的不同表示,那么相同方法的重载版本的行为相同。在下面的方法描述中,只记录了一个版本。第二个版本有一个指向第一个的链接:相同的文档适用于两个。
有关对 Context
方法的名称参数的解释的讨论,请参见 Context
。这些相同的规则适用于 DirContext
方法的名称参数。
属性模型
有两种属性应该关联的基本模型。首先,属性可能直接与 DirContext 对象相关联。在此模型中,对命名对象的属性操作大致等同于对名称的查找(返回 DirContext 对象),然后是对 DirContext 对象调用的属性操作,其中调用者提供一个空名称。属性可以被视为与对象一起存储(请注意,这并不意味着实现必须这样做)。第二种模型是属性与 DirContext 中的名称(通常是原子名称)相关联。在此模型中,命名对象上的属性操作大致等同于查找命名对象的父 DirContext 的名称,然后是在调用者提供终端原子名称的父级上调用的属性操作。可以将属性视为存储在父 DirContext 中(同样,这并不意味着实现必须这样做)。不是 DirContext 的对象可以有属性,只要它们的父对象是 DirContext。
JNDI 支持这两种模型。由各个服务提供者决定在哪里“存储”属性。当 JNDI 客户端不假设对象的属性是存储为对象的一部分,还是存储在父对象中并与对象的名称相关联时,它们是最安全的。
属性类型名称
在getAttributes()
和 search()
方法中,您可以通过提供属性名称(字符串)列表来提供要返回的属性。您取回的属性可能与您指定的属性名称不同。这是因为某些目录支持导致它们返回其他属性的功能。此类功能包括属性子类化、属性名称同义词和属性语言代码。
在属性子类化中,属性在类层次结构中定义。例如,在某些目录中,“name”属性可能是所有与名称相关的属性的超类,包括“commonName”和“surName”。请求“name”属性可能会同时返回“commonName”和“surName”属性。
使用属性类型同义词,目录可以将多个名称分配给同一属性。例如,“cn”和“commonName”可能都指代同一个属性。询问“cn”可能会返回“commonName”属性。
一些目录支持属性的语言代码。例如,向此类目录询问“描述”属性可能会返回以下所有属性:
- description
- 描述;lang-en
- 描述;朗德
- 描述;lang-fr
操作属性
一些目录具有“操作属性”的概念,这些属性是出于管理目的与目录对象关联的属性。操作属性的一个示例是对象的访问控制列表。
在 getAttributes()
和 search()
方法中,您可以指定与请求对象关联的所有属性由供应 null
作为要返回的属性列表返回。返回的属性 do not 包括操作属性。为了检索操作属性,您必须明确命名它们。
命名上下文
在某些方法中,名称必须解析为上下文(例如,在搜索单级上下文时)。此类方法的文档使用术语 named context 来描述它们的名称参数。对于这些方法,如果命名对象不是 DirContext,则抛出 NotContextException
。除了这些方法之外,不要求 named object 是 DirContext。
参数
服务提供者不会修改作为参数传递给任何方法的 Attributes
、 SearchControls
或数组对象。服务提供商可以在操作期间保留对它的引用,包括方法结果的任何枚举和生成的任何引用的处理。调用者不应在此期间修改对象。任何方法返回的 Attributes
对象都归调用者所有。调用者可以随后修改它;服务提供商不会。
异常
此接口中的所有方法都可以抛出 NamingException 或其任何子类。有关每个异常的详细信息,请参阅 NamingException 及其子类。
- 自从:
- 1.3
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final int
此常量指定添加具有指定值的属性。static final int
此常量指定从属性中删除指定的属性值。static final int
此常量指定用指定值替换属性。 -
方法总结
修饰符和类型方法描述void
bind
(String name, Object obj, Attributes attrs) 将名称连同关联的属性绑定到对象。void
bind
(Name name, Object obj, Attributes attrs) 将名称连同关联的属性绑定到对象。createSubcontext
(String name, Attributes attrs) 创建并绑定新的上下文以及关联的属性。createSubcontext
(Name name, Attributes attrs) 创建并绑定新的上下文以及关联的属性。getAttributes
(String name) 检索与命名对象关联的所有属性。getAttributes
(String name, String[] attrIds) 检索与命名对象关联的选定属性。getAttributes
(Name name) 检索与命名对象关联的所有属性。getAttributes
(Name name, String[] attrIds) 检索与命名对象关联的选定属性。检索与命名对象关联的模式。检索与命名对象关联的模式。检索包含命名对象的类定义的架构对象的上下文。getSchemaClassDefinition
(Name name) 检索包含命名对象的类定义的架构对象的上下文。void
modifyAttributes
(String name, int mod_op, Attributes attrs) 修改与命名对象关联的属性。void
modifyAttributes
(String name, ModificationItem[] mods) 使用有序的修改列表修改与命名对象关联的属性。void
modifyAttributes
(Name name, int mod_op, Attributes attrs) 修改与命名对象关联的属性。void
modifyAttributes
(Name name, ModificationItem[] mods) 使用有序的修改列表修改与命名对象关联的属性。void
rebind
(String name, Object obj, Attributes attrs) 将名称连同关联的属性绑定到对象,重写任何现有绑定。void
rebind
(Name name, Object obj, Attributes attrs) 将名称连同关联的属性绑定到对象,重写任何现有绑定。search
(String name, String filterExpr, Object[] filterArgs, SearchControls cons) 在命名上下文或对象中搜索满足给定搜索过滤器的条目。search
(String name, String filter, SearchControls cons) 在命名上下文或对象中搜索满足给定搜索过滤器的条目。search
(String name, Attributes matchingAttributes) 在单个上下文中搜索包含一组指定属性的对象。search
(String name, Attributes matchingAttributes, String[] attributesToReturn) 在单个上下文中搜索包含一组指定属性的对象,并检索选定的属性。search
(Name name, String filterExpr, Object[] filterArgs, SearchControls cons) 在命名上下文或对象中搜索满足给定搜索过滤器的条目。search
(Name name, String filter, SearchControls cons) 在命名上下文或对象中搜索满足给定搜索过滤器的条目。search
(Name name, Attributes matchingAttributes) 在单个上下文中搜索包含一组指定属性的对象。search
(Name name, Attributes matchingAttributes, String[] attributesToReturn) 在单个上下文中搜索包含一组指定属性的对象,并检索选定的属性。在接口 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
-
字段详细信息
-
ADD_ATTRIBUTE
static final int ADD_ATTRIBUTE此常量指定添加具有指定值的属性。如果属性不存在,则创建该属性。结果属性具有指定值集和先前值集的并集。如果属性必须至少有一个值,则添加一个没有值的属性将抛出
InvalidAttributeValueException
。对于已经存在该属性的单值属性,抛出AttributeInUseException
。如果尝试向单值属性添加多个值,则抛出InvalidAttributeValueException
。此常量值为
1
.- 参见:
-
REPLACE_ATTRIBUTE
static final int REPLACE_ATTRIBUTE此常量指定用指定值替换属性。如果属性已经存在,则用新的指定值替换所有现有值。如果该属性不存在,则创建它。如果未指定值,则删除该属性的所有值。如果要求属性至少有一个值,则移除最后一个值将移除该属性。如果尝试向单值属性添加多个值,则抛出
InvalidAttributeValueException
。此常量值为
2
.- 参见:
-
REMOVE_ATTRIBUTE
static final int REMOVE_ATTRIBUTE此常量指定从属性中删除指定的属性值。结果属性具有其先前值集和指定值集的集差。如果未指定任何值,则删除整个属性。如果该属性不存在,或者如果指定值集的部分或全部成员不存在,则可以忽略这种缺失并且操作成功,或者可以抛出 NamingException 以指示不存在。如果要求属性至少有一个值,则移除最后一个值将移除该属性。
此常量值为
3
.- 参见:
-
-
方法详情
-
getAttributes
检索与命名对象关联的所有属性。请参阅有关属性模型、属性类型名称和操作属性的类描述。- 参数:
name
- 从中检索属性的对象的名称- 返回:
-
与
name
关联的属性集。如果名称没有属性,则返回空属性集;从不为空。 - 抛出:
NamingException
- 如果遇到命名异常- 参见:
-
getAttributes
检索与命名对象关联的所有属性。有关详细信息,请参阅getAttributes(Name)
。- 参数:
name
- 从中检索属性的对象的名称- 返回:
-
与
name
关联的属性集 - 抛出:
NamingException
- 如果遇到命名异常
-
getAttributes
检索与命名对象关联的选定属性。请参阅有关属性模型、属性类型名称和操作属性的类描述。如果对象没有指定属性,目录将忽略不存在的属性并返回对象确实具有的请求属性。
目录可能会返回比请求更多的属性(请参阅类描述中的 Attribute Type Names),但不允许返回任意的、不相关的属性。
另请参阅类描述中的 Operational Attributes。
- 参数:
name
- 从中检索属性的对象的名称attrIds
- 要检索的属性的标识符。 null 表示应检索所有属性;空数组表示不应检索任何内容。- 返回:
- 请求的属性;永不为空
- 抛出:
NamingException
- 如果遇到命名异常
-
getAttributes
检索与命名对象关联的选定属性。有关详细信息,请参阅getAttributes(Name, String[])
。- 参数:
name
- 从中检索属性的对象的名称attrIds
- 要检索的属性的标识符。 null 表示应检索所有属性;空数组表示不应检索任何内容。- 返回:
- 请求的属性;永不为空
- 抛出:
NamingException
- 如果遇到命名异常
-
modifyAttributes
修改与命名对象关联的属性。未指定修改的顺序。在可能的情况下,修改以原子方式执行。- 参数:
name
- 属性将被更新的对象的名称mod_op
- 修改操作,其中之一:ADD_ATTRIBUTE
、REPLACE_ATTRIBUTE
、REMOVE_ATTRIBUTE
。attrs
- 用于修改的属性;不能为空- 抛出:
AttributeModificationException
- 如果修改不能成功完成NamingException
- 如果遇到命名异常- 参见:
-
modifyAttributes
修改与命名对象关联的属性。有关详细信息,请参阅modifyAttributes(Name, int, Attributes)
。- 参数:
name
- 属性将被更新的对象的名称mod_op
- 修改操作,其中之一:ADD_ATTRIBUTE
、REPLACE_ATTRIBUTE
、REMOVE_ATTRIBUTE
。attrs
- 用于修改的属性;不能为空- 抛出:
AttributeModificationException
- 如果修改不能成功完成NamingException
- 如果遇到命名异常
-
modifyAttributes
使用有序的修改列表修改与命名对象关联的属性。修改按指定的顺序执行。每个修改指定一个修改操作代码和一个对其进行操作的属性。在可能的情况下,修改以原子方式执行。- 参数:
name
- 属性将被更新的对象的名称mods
- 要执行的修改的有序序列;不能为空- 抛出:
AttributeModificationException
- 如果修改不能成功完成NamingException
- 如果遇到命名异常- 参见:
-
modifyAttributes
使用有序的修改列表修改与命名对象关联的属性。有关详细信息,请参阅modifyAttributes(Name, ModificationItem[])
。- 参数:
name
- 属性将被更新的对象的名称mods
- 要执行的修改的有序序列;不能为空- 抛出:
AttributeModificationException
- 如果修改不能成功完成NamingException
- 如果遇到命名异常
-
bind
将名称连同关联的属性绑定到对象。如果attrs
为 null,如果obj
为DirContext
,则生成的绑定将具有与obj
关联的属性,否则没有属性。如果attrs
不为空,则生成的绑定将具有attrs
作为其属性;与obj
关联的任何属性都将被忽略。- 参数:
name
- 要绑定的名称;可能不为空obj
- 要绑定的对象;可能为空attrs
- 与绑定关联的属性- 抛出:
NameAlreadyBoundException
- 如果名称已经绑定InvalidAttributesException
- 如果未提供绑定的某些“强制”属性NamingException
- 如果遇到命名异常- 参见:
-
bind
将名称连同关联的属性绑定到对象。有关详细信息,请参阅bind(Name, Object, Attributes)
。- 参数:
name
- 要绑定的名称;可能不为空obj
- 要绑定的对象;可能为空attrs
- 与绑定关联的属性- 抛出:
NameAlreadyBoundException
- 如果名称已经绑定InvalidAttributesException
- 如果未提供绑定的某些“强制”属性NamingException
- 如果遇到命名异常
-
rebind
将名称连同关联的属性绑定到对象,覆盖任何现有绑定。如果attrs
为空且obj
为DirContext
,则使用obj
中的属性。如果attrs
为空且obj
不是DirContext
,则与已绑定在目录中的对象关联的任何现有属性保持不变。如果attrs
不为空,则删除与目录中已绑定的对象关联的任何现有属性,并将attrs
与命名对象关联。如果obj
是DirContext
且attrs
非空,则忽略obj
的属性。- 参数:
name
- 要绑定的名称;可能不为空obj
- 要绑定的对象;可能为空attrs
- 与绑定关联的属性- 抛出:
InvalidAttributesException
- 如果未提供绑定的某些“强制”属性NamingException
- 如果遇到命名异常- 参见:
-
rebind
将名称连同关联的属性绑定到对象,覆盖任何现有绑定。有关详细信息,请参阅rebind(Name, Object, Attributes)
。- 参数:
name
- 要绑定的名称;可能不为空obj
- 要绑定的对象;可能为空attrs
- 与绑定关联的属性- 抛出:
InvalidAttributesException
- 如果未提供绑定的某些“强制”属性NamingException
- 如果遇到命名异常
-
createSubcontext
创建并绑定新的上下文以及关联的属性。此方法使用给定的名称创建一个新的子上下文,将其绑定到目标上下文(由名称的终端原子组件以外的所有内容命名),并将提供的属性与新创建的对象相关联。所有中间上下文和目标上下文必须已经存在。如果attrs
为 null,则此方法等效于Context.createSubcontext()
。- 参数:
name
- 要创建的上下文的名称;可能不为空attrs
- 与新创建的上下文关联的属性- 返回:
- 新创建的上下文
- 抛出:
NameAlreadyBoundException
- 如果名称已经绑定InvalidAttributesException
- 如果attrs
不包含创建所需的所有强制属性NamingException
- 如果遇到命名异常- 参见:
-
createSubcontext
创建并绑定新的上下文以及关联的属性。有关详细信息,请参阅createSubcontext(Name, Attributes)
。- 参数:
name
- 要创建的上下文的名称;可能不为空attrs
- 与新创建的上下文关联的属性- 返回:
- 新创建的上下文
- 抛出:
NameAlreadyBoundException
- 如果名称已经绑定InvalidAttributesException
- 如果attrs
不包含创建所需的所有强制属性NamingException
- 如果遇到命名异常
-
getSchema
检索与命名对象关联的模式。该模式描述了有关命名空间结构和其中存储的属性的规则。架构指定了哪些类型的对象可以添加到目录中以及可以添加到哪里;对象可以具有哪些强制性和可选属性。模式的支持范围是特定于目录的。此方法返回适用于命名对象的模式信息树的根。几个命名对象(甚至整个目录)可能共享相同的模式。
架构树的结构和内容、修改架构树内容的权限以及此类修改对目录的影响等问题都取决于底层目录。
- 参数:
name
- 要检索其模式的对象的名称- 返回:
- 与上下文关联的模式;永不为空
- 抛出:
OperationNotSupportedException
- 如果模式不受支持NamingException
- 如果遇到命名异常
-
getSchema
检索与命名对象关联的模式。有关详细信息,请参阅getSchema(Name)
。- 参数:
name
- 要检索其模式的对象的名称- 返回:
- 与上下文关联的模式;永不为空
- 抛出:
OperationNotSupportedException
- 如果模式不受支持NamingException
- 如果遇到命名异常
-
getSchemaClassDefinition
检索包含命名对象的类定义的架构对象的上下文。在目录架构中找到的一类信息是 class definitions 。 “对象类”定义指定对象的type 以及对象必须/可以具有的属性(强制和可选)。请注意,这里提到的术语“对象类”是目录意义上的,而不是 Java 意义上的。例如,如果命名对象是“Person”类的目录对象,
getSchemaClassDefinition()
将返回一个DirContext
表示(目录的)对象类定义“Person”。可以从对象类定义中检索的信息是依赖于目录的。
在 JNDI 1.2 之前,此方法返回表示命名对象的类定义的单个模式对象。从 JNDI 1.2 开始,此方法返回一个包含所有命名对象的类定义的
DirContext
。- 参数:
name
- 要检索其对象类定义的对象的名称- 返回:
DirContext
包含命名对象的类定义;永不为空- 抛出:
OperationNotSupportedException
- 如果模式不受支持NamingException
- 如果遇到命名异常
-
getSchemaClassDefinition
检索包含命名对象的类定义的架构对象的上下文。有关详细信息,请参阅getSchemaClassDefinition(Name)
。- 参数:
name
- 要检索其对象类定义的对象的名称- 返回:
DirContext
包含命名对象的类定义;永不为空- 抛出:
OperationNotSupportedException
- 如果模式不受支持NamingException
- 如果遇到命名异常
-
search
NamingEnumeration <SearchResult > search(Name name, Attributes matchingAttributes, String [] attributesToReturn) throws NamingException 在单个上下文中搜索包含一组指定属性的对象,并检索选定的属性。使用默认的SearchControls
设置执行搜索。对于要选择的对象,
matchingAttributes
中的每个属性都必须与对象的某些属性相匹配。如果matchingAttributes
为空或 null,则返回目标上下文中的所有对象。一个属性A1在
matchingAttributes
中被认为与属性 A 匹配2对象的 if A1和A2具有相同的标识符,并且A的每个值1等于 A 的某个值2.这意味着值的顺序并不重要,而且A2可能包含在 A 中找不到的“额外”值1不影响比较。这也意味着如果A1没有值,则测试匹配等同于测试属性 A 是否存在2具有相同的标识符。用于比较属性值的“相等性”的精确定义由底层目录服务定义。例如,它可能使用
Object.equals
方法,或者可能使用模式来指定不同的相等操作。对于基于除相等性以外的操作(例如子字符串比较)的匹配,请使用带有过滤器参数的search
方法版本。当对此
DirContext
进行更改时,对先前调用此方法返回的枚举的影响是不确定的。如果对象没有指定的属性,目录将忽略不存在的属性并返回对象确实具有的请求属性。
目录可能会返回比请求更多的属性(请参阅类描述中的 Attribute Type Names),但不允许返回任意的、不相关的属性。
另请参阅类描述中的 Operational Attributes。
- 参数:
name
- 要搜索的上下文的名称matchingAttributes
- 要搜索的属性。如果为空或 null,则返回目标上下文中的所有对象。attributesToReturn
- 要返回的属性。 null 表示要返回所有属性;空数组表示不返回任何内容。- 返回:
SearchResult
对象的非空枚举。每个SearchResult
包含由attributesToReturn
标识的属性和相应对象的名称,相对于name
命名的上下文命名。- 抛出:
NamingException
- 如果遇到命名异常- 参见:
-
search
NamingEnumeration <SearchResult > search(String name, Attributes matchingAttributes, String [] attributesToReturn) throws NamingException 在单个上下文中搜索包含一组指定属性的对象,并检索选定的属性。有关详细信息,请参阅search(Name, Attributes, String[])
。- 参数:
name
- 要搜索的上下文的名称matchingAttributes
- 要搜索的属性attributesToReturn
- 要返回的属性- 返回:
SearchResult
对象的非空枚举- 抛出:
NamingException
- 如果遇到命名异常
-
search
NamingEnumeration <SearchResult > search(Name name, Attributes matchingAttributes) throws NamingException 在单个上下文中搜索包含一组指定属性的对象。此方法返回此类对象的所有属性。它等效于将 null 作为attributesToReturn
参数提供给方法search(Name, Attributes, String[])
。
有关完整说明,请参阅search(Name, Attributes, String[])
。- 参数:
name
- 要搜索的上下文的名称matchingAttributes
- 要搜索的属性- 返回:
SearchResult
对象的枚举- 抛出:
NamingException
- 如果遇到命名异常- 参见:
-
search
NamingEnumeration <SearchResult > search(String name, Attributes matchingAttributes) throws NamingException 在单个上下文中搜索包含一组指定属性的对象。有关详细信息,请参阅search(Name, Attributes)
。- 参数:
name
- 要搜索的上下文的名称matchingAttributes
- 要搜索的属性- 返回:
SearchResult
对象的枚举- 抛出:
NamingException
- 如果遇到命名异常
-
search
NamingEnumeration <SearchResult > search(Name name, String filter, SearchControls cons) throws NamingException 在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。filter
的格式和解释遵循 RFC 2254,RFC 中提到的attr
和value
的解释如下。attr
是属性的标识符。value
是表示属性值的字符串。将此字符串表示形式转换为属性值是特定于目录的。例如,对于断言“someCount=127”,
attr
是“someCount”,value
是“127”。提供者根据属性 ID(“someCount”)(可能还有它的模式)确定属性的值是一个整数。然后它会适当地解析字符串“127”。过滤器字符串中的任何非 ASCII 字符都应由适当的 Java (Unicode) 字符表示,而不是编码为 UTF-8 八位字节。或者,可以使用 RFC 2254 中描述的“反斜杠-十六进制代码”表示法。
如果目录不支持其部分或全部属性的字符串表示形式,则可以改用接受对象形式的过滤器参数的
search
形式。这样一个目录的服务提供者然后将过滤器参数转换为其特定于服务的表示以用于过滤器评估。参见search(Name, String, Object[], SearchControls)
。RFC 2254 为过滤器定义了某些运算符,包括子串匹配、相等、近似匹配、大于、小于。这些运算符被映射到底层目录中具有相应语义的运算符。例如,对于等于运算符,假设目录有一个匹配规则定义过滤器中属性的“相等性”。此规则将用于检查过滤器中指定的属性与目录中对象的属性是否相等。类似地,如果目录有一个匹配的排序规则,这个规则将用于进行“大于”和“小于”的比较。
并非 RFC 2254 中定义的所有运算符都适用于所有属性。当运算符不适用时,将抛出异常
InvalidSearchFilterException
。结果以
SearchResult
s 的枚举形式返回。每个SearchResult
包含对象的名称和有关该对象的其他信息(请参阅 SearchResult)。该名称要么是相对于搜索的目标上下文(由name
参数命名),要么是一个 URL 字符串。如果目标上下文包含在枚举中(当cons
指定搜索范围为SearchControls.OBJECT_SCOPE
或SearchControls.SUBSTREE_SCOPE
时可能),则其名称为空字符串。如果cons
参数指定返回属性,则SearchResult
也可能包含匹配对象的属性。如果对象没有请求的属性,则该不存在的属性将被忽略。对象确实具有的那些请求的属性将被返回。
目录可能会返回比请求更多的属性(请参阅类描述中的 Attribute Type Names),但不允许返回任意的、不相关的属性。
另请参阅类描述中的 Operational Attributes。
- 参数:
name
- 要搜索的上下文或对象的名称filter
- 用于搜索的过滤器表达式;不能为空cons
- 控制搜索的搜索控件。如果为空,则使用默认搜索控件(相当于(new SearchControls())
)。- 返回:
-
满足过滤器的对象的
SearchResult
枚举;永不为空 - 抛出:
InvalidSearchFilterException
- 如果底层目录不支持或不理解指定的搜索过滤器InvalidSearchControlsException
- 如果搜索控件包含无效设置NamingException
- 如果遇到命名异常- 参见:
-
search
NamingEnumeration <SearchResult > search(String name, String filter, SearchControls cons) throws NamingException 在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。有关详细信息,请参阅search(Name, String, SearchControls)
。- 参数:
name
- 要搜索的上下文或对象的名称filter
- 用于搜索的过滤器表达式;不能为空cons
- 控制搜索的搜索控件。如果为空,则使用默认搜索控件(相当于(new SearchControls())
)。- 返回:
-
满足过滤器的对象的
SearchResult
枚举。 - 抛出:
InvalidSearchFilterException
- 如果底层目录不支持或不理解指定的搜索过滤器InvalidSearchControlsException
- 如果搜索控件包含无效设置NamingException
- 如果遇到命名异常
-
search
NamingEnumeration <SearchResult > search(Name name, String filterExpr, Object [] filterArgs, SearchControls cons) throws NamingException 在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。filterExpr
的解释基于 RFC 2254。它可能还包含{i}
形式的变量——其中i
是一个整数——引用filterArgs
数组中的对象。filterExpr
的解释在其他方面与方法search(Name, String, SearchControls)
的filter
参数相同。当变量
{i}
出现在搜索过滤器中时,表示要在该位置使用过滤器参数filterArgs[i]
。此类变量可用于 attr 、 value 或 matchingrule 产生式出现在 RFC 2254 第 4 节的过滤器语法中的任何地方。当字符串值过滤器参数替换变量时,过滤器被解释为好像字符串是在变量的位置,过滤器中具有特殊意义的任何字符(例如'*'
)已根据 RFC 2254 的规则进行了转义。对于部分或全部属性不使用字符串表示的目录,对应于属性值的过滤器参数可能是 String 以外的类型。例如,支持非结构化二进制值属性的目录应该接受字节数组作为过滤器参数。任何其他类型的过滤器参数的解释(如果有的话)由该目录的服务提供者确定,它将过滤器操作映射到底层目录中具有相应语义的操作。
此方法返回结果的枚举。枚举中的每个元素都包含对象的名称和有关对象的其他信息(请参阅
SearchResult
)。该名称要么是相对于搜索的目标上下文(由name
参数命名),要么是一个 URL 字符串。如果目标上下文包含在枚举中(当cons
指定搜索范围为SearchControls.OBJECT_SCOPE
或SearchControls.SUBSTREE_SCOPE
时可能),则其名称为空字符串。如果
cons
参数指定返回属性,SearchResult
也可能包含匹配对象的属性。如果对象没有请求的属性,则该不存在的属性将被忽略。对象确实具有的那些请求的属性将被返回。
目录可能会返回比请求更多的属性(请参阅类描述中的 Attribute Type Names),但不允许返回任意的、不相关的属性。
如果向此方法提供具有无效变量替换的搜索过滤器,则结果未定义。对此 DirContext 进行更改时,对先前调用此方法返回的枚举的影响是不确定的。
另请参阅类描述中的 Operational Attributes。
- 参数:
name
- 要搜索的上下文或对象的名称filterExpr
- 用于搜索的过滤器表达式。该表达式可能包含“{i}
”形式的变量,其中i
是一个非负整数。不能为空。filterArgs
- 用于替换filterExpr
中变量的参数数组。filterArgs[i]
的值将替换每次出现的“{i}
”。如果为null,相当于一个空数组。cons
- 控制搜索的搜索控件。如果为空,则使用默认搜索控件(相当于(new SearchControls())
)。- 返回:
-
满足过滤器的对象的
SearchResult
枚举;永不为空 - 抛出:
ArrayIndexOutOfBoundsException
- 如果filterExpr
包含{i}
表达式,其中i
在数组filterArgs
的边界之外InvalidSearchControlsException
- 如果cons
包含无效设置InvalidSearchFilterException
- 如果filterExpr
和filterArgs
表示无效的搜索过滤器NamingException
- 如果遇到命名异常- 参见:
-
search
NamingEnumeration <SearchResult > search(String name, String filterExpr, Object [] filterArgs, SearchControls cons) throws NamingException 在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。有关详细信息,请参阅search(Name, String, Object[], SearchControls)
。- 参数:
name
- 要搜索的上下文或对象的名称filterExpr
- 用于搜索的过滤器表达式。该表达式可能包含“{i}
”形式的变量,其中i
是一个非负整数。不能为空。filterArgs
- 用于替换filterExpr
中变量的参数数组。filterArgs[i]
的值将替换每次出现的“{i}
”。如果为null,相当于一个空数组。cons
- 控制搜索的搜索控件。如果为空,则使用默认搜索控件(相当于(new SearchControls())
)。- 返回:
-
满足过滤器的对象的
SearchResult
枚举;永不为空 - 抛出:
ArrayIndexOutOfBoundsException
- 如果filterExpr
包含{i}
表达式,其中i
在数组filterArgs
的边界之外InvalidSearchControlsException
- 如果cons
包含无效设置InvalidSearchFilterException
- 如果filterExpr
和filterArgs
表示无效的搜索过滤器NamingException
- 如果遇到命名异常
-