Module java.naming

Interface DirContext

所有超接口:
Context
所有已知子接口:
EventDirContext, LdapContext
所有已知实现类:
InitialDirContext, InitialLdapContext

public interface DirContext extends Context
目录服务接口,包含用于检查和更新与对象关联的属性以及搜索目录的方法。

名称

传递给DirContext方法的每个名称都是相对于该上下文的。空名称用于命名上下文本身。名称参数永远不应为null。

大多数方法都有重载版本,其中一个采用Name参数,另一个采用String。这些重载版本是等效的,如果NameString参数只是相同名称的不同表示,则相同方法的重载版本行为相同。在下面的方法描述中,只记录了一个版本。第二个版本有一个链接到第一个版本:相同的文档适用于两者。

请参阅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”属性可能返回以下所有属性:

  • description
  • description;lang-en
  • description;lang-de
  • description;lang-fr

操作属性

一些目录具有“操作属性”的概念,这些属性与目录对象关联用于管理目的。操作属性的一个示例是对象的访问控制列表。

getAttributes()search()方法中,您可以指定返回请求对象关联的所有属性,方法是提供null作为要返回的属性列表。返回的属性不包括操作属性。要检索操作属性,必须显式命名它们。

命名上下文

有些方法中,名称必须解析为上下文(例如,在搜索单个级别上下文时)。此类方法的文档使用术语命名上下文来描述其名称参数。对于这些方法,如果命名对象不是DirContext,则会抛出NotContextException。除了这些方法外,没有要求命名对象必须是DirContext。

参数

传递给任何方法的AttributesSearchControls或数组对象不会被服务提供者修改。服务提供者可能会保留对它的引用,直到操作完成,包括方法结果的任何枚举和生成的任何引用的处理。在此期间,调用者不应修改对象。由任何方法返回的Attributes对象由调用者拥有。调用者随后可以修改它;服务提供者不会这样做。

异常

此接口中的所有方法都可以抛出NamingException或其任何子类。有关每个异常的详细信息,请参阅NamingException及其子类。

自版本:
1.3
另请参阅:
  • Field Details

    • 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

      参见:
  • Method Details

    • getAttributes

      Attributes getAttributes(Name name) throws NamingException
      检索与命名对象关联的所有属性。有关属性模型、属性类型名称和操作属性,请参阅类描述。
      参数:
      name - 要检索属性的对象的名称
      返回:
      name关联的属性集。如果名称没有属性,则返回一个空属性集;永不为null。
      抛出:
      NamingException - 如果遇到命名异常
      参见:
    • getAttributes

      Attributes getAttributes(String name) throws NamingException
      检索与命名对象关联的所有属性。有关详细信息,请参见getAttributes(Name)
      参数:
      name - 要检索属性的对象的名称
      返回:
      name关联的属性集
      抛出:
      NamingException - 如果遇到命名异常
    • getAttributes

      Attributes getAttributes(Name name, String[] attrIds) throws NamingException
      检索与命名对象关联的选定属性。有关属性模型、属性类型名称和操作属性,请参阅类描述。

      如果对象没有指定属性,则目录将忽略不存在的属性,并返回对象确实具有的请求属性。

      目录可能返回比请求的属性更多的属性(请参阅类描述中的属性类型名称),但不允许返回任意不相关的属性。

      另请参阅类描述中的操作属性

      参数:
      name - 要检索属性的对象的名称
      attrIds - 要检索的属性的标识符。null表示应检索所有属性;空数组表示不应检索任何属性。
      返回:
      请求的属性;永不为null
      抛出:
      NamingException - 如果遇到命名异常
    • getAttributes

      Attributes getAttributes(String name, String[] attrIds) throws NamingException
      检索与命名对象关联的选定属性。有关详细信息,请参见getAttributes(Name, String[])
      参数:
      name - 要检索属性的对象的名称
      attrIds - 要检索的属性的标识符。null表示应检索所有属性;空数组表示不应检索任何属性。
      返回:
      请求的属性;永不为null
      抛出:
      NamingException - 如果遇到命名异常
    • modifyAttributes

      void modifyAttributes(Name name, int mod_op, Attributes attrs) throws NamingException
      修改与命名对象关联的属性。未指定修改的顺序。在可能的情况下,修改是原子执行的。
      参数:
      name - 将更新其属性的对象的名称
      mod_op - 修改操作,其中之一:ADD_ATTRIBUTEREPLACE_ATTRIBUTEREMOVE_ATTRIBUTE
      attrs - 用于修改的属性;不得为null
      抛出:
      AttributeModificationException - 如果无法成功完成修改
      NamingException - 如果遇到命名异常
      参见:
    • modifyAttributes

      void modifyAttributes(String name, int mod_op, Attributes attrs) throws NamingException
      修改与命名对象关联的属性。有关详细信息,请参见modifyAttributes(Name, int, Attributes)
      参数:
      name - 将更新其属性的对象的名称
      mod_op - 修改操作,其中之一:ADD_ATTRIBUTEREPLACE_ATTRIBUTEREMOVE_ATTRIBUTE
      attrs - 用于修改的属性;不得为null
      抛出:
      AttributeModificationException - 如果无法成功完成修改
      NamingException - 如果遇到命名异常
    • modifyAttributes

      void modifyAttributes(Name name, ModificationItem[] mods) throws NamingException
      使用有序的修改列表修改与命名对象关联的属性。按指定顺序执行修改。每个修改指定一个修改操作代码和要操作的属性。在可能的情况下,修改是原子执行的。
      参数:
      name - 将更新其属性的对象的名称
      mods - 要执行的修改的有序序列;不得为null
      抛出:
      AttributeModificationException - 如果无法成功完成修改
      NamingException - 如果遇到命名异常
      参见:
    • modifyAttributes

      void modifyAttributes(String name, ModificationItem[] mods) throws NamingException
      使用有序的修改列表修改与命名对象关联的属性。有关详细信息,请参见modifyAttributes(Name, ModificationItem[])
      参数:
      name - 将更新其属性的对象的名称
      mods - 要执行的修改的有序序列;不得为null
      抛出:
      AttributeModificationException - 如果无法成功完成修改
      NamingException - 如果遇到命名异常
    • bind

      void bind(Name name, Object obj, Attributes attrs) throws NamingException
      将名称绑定到对象,并附带关联的属性。如果attrs为null,则生成的绑定将具有与obj关联的属性(如果objDirContext),否则没有属性。如果attrs为非null,则生成的绑定将具有attrs作为其属性;忽略与obj关联的任何属性。
      参数:
      name - 要绑定的名称;不能为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果未提供绑定的一些“必需”属性
      NamingException - 如果遇到命名异常
      参见:
    • bind

      void bind(String name, Object obj, Attributes attrs) throws NamingException
      将名称与对象绑定,并附带关联的属性。详情请参阅 bind(Name, Object, Attributes)
      参数:
      name - 要绑定的名称;不能为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果未提供绑定的一些“必需”属性
      NamingException - 如果遇到命名异常
    • rebind

      void rebind(Name name, Object obj, Attributes attrs) throws NamingException
      将名称与对象绑定,并附带关联的属性,覆盖任何现有绑定。如果 attrs 为 null 并且 obj 是一个 DirContext,则使用 obj 的属性。如果 attrs 为 null 并且 obj 不是 DirContext,则保持不变与目录中已绑定对象相关联的任何现有属性。如果 attrs 不为 null,则删除与目录中已绑定对象相关联的任何现有属性,并将 attrs 与命名对象关联。如果 obj 是一个 DirContext 并且 attrs 不为 null,则忽略 obj 的属性。
      参数:
      name - 要绑定的名称;不能为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      InvalidAttributesException - 如果未提供绑定的一些“必需”属性
      NamingException - 如果遇到命名异常
      参见:
    • rebind

      void rebind(String name, Object obj, Attributes attrs) throws NamingException
      将名称与对象绑定,并附带关联的属性,覆盖任何现有绑定。详情请参阅 rebind(Name, Object, Attributes)
      参数:
      name - 要绑定的名称;不能为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      InvalidAttributesException - 如果未提供绑定的一些“必需”属性
      NamingException - 如果遇到命名异常
    • createSubcontext

      DirContext createSubcontext(Name name, Attributes attrs) throws NamingException
      创建并绑定新的上下文,并附带关联的属性。此方法使用给定名称创建一个新的子上下文,在目标上下文(由名称除了末端原子组件的所有部分命名)中绑定它,并将提供的属性与新创建的对象关联。所有中间和目标上下文必须已经存在。如果 attrs 为 null,则此方法等效于 Context.createSubcontext()
      参数:
      name - 要创建的上下文的名称;不能为空
      attrs - 与新创建的上下文关联的属性
      返回:
      新创建的上下文
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果 attrs 不包含创建所需的所有必需属性
      NamingException - 如果遇到命名异常
      参见:
    • createSubcontext

      DirContext createSubcontext(String name, Attributes attrs) throws NamingException
      创建并绑定新的上下文,并附带关联的属性。详情请参阅 createSubcontext(Name, Attributes)
      参数:
      name - 要创建的上下文的名称;不能为空
      attrs - 与新创建的上下文关联的属性
      返回:
      新创建的上下文
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果 attrs 不包含创建所需的所有必需属性
      NamingException - 如果遇到命名异常
    • getSchema

      DirContext getSchema(Name name) throws NamingException
      检索与命名对象关联的模式。模式描述了命名空间的结构规则以及其中存储的属性。模式指定可以添加到目录中的对象类型以及它们可以添加的位置;对象可以具有的强制和可选属性。模式支持的范围是特定于目录的。

      此方法返回适用于命名对象的模式信息树的根。多个命名对象(甚至整个目录)可能共享相同的模式。

      模式树的结构和内容、修改模式树内容的权限以及此类修改对目录的影响等问题取决于底层目录。

      参数:
      name - 要检索其模式的对象的名称
      返回:
      与上下文关联的模式;永不为 null
      抛出:
      OperationNotSupportedException - 如果不支持模式
      NamingException - 如果遇到命名异常
    • getSchema

      DirContext getSchema(String name) throws NamingException
      检索与命名对象关联的模式。详情请参阅 getSchema(Name)
      参数:
      name - 要检索其模式的对象的名称
      返回:
      与上下文关联的模式;永不为 null
      抛出:
      OperationNotSupportedException - 如果不支持模式
      NamingException - 如果遇到命名异常
    • getSchemaClassDefinition

      DirContext getSchemaClassDefinition(Name name) throws NamingException
      检索包含命名对象类定义的模式对象的上下文。

      在目录模式中找到的信息类别之一是 类定义。"对象类"定义指定对象的 类型 以及对象必须/可以具有的属性(强制和可选)。请注意,这里提到的 "对象类" 术语是指目录意义上的,而不是 Java 意义上的。例如,如果命名对象是 "Person" 类的目录对象,则 getSchemaClassDefinition() 将返回表示 "Person"(目录的)对象类定义的 DirContext

      可以从对象类定义中检索的信息是特定于目录的。

      在 JNDI 1.2 之前,此方法返回表示命名对象的类定义的单个模式对象。自 JNDI 1.2 起,此方法返回一个包含所有命名对象类定义的 DirContext

      参数:
      name - 要检索其对象类定义的对象的名称
      返回:
      包含命名对象类定义的 DirContext;永不为 null
      抛出:
      OperationNotSupportedException - 如果不支持模式
      NamingException - 如果遇到命名异常
    • getSchemaClassDefinition

      DirContext getSchemaClassDefinition(String name) throws NamingException
      检索包含命名对象类定义的模式对象的上下文。详情请参阅 getSchemaClassDefinition(Name)
      参数:
      name - 要检索其对象类定义的对象的名称
      返回:
      包含命名对象类定义的DirContext;永不为null
      抛出:
      OperationNotSupportedException - 如果不支持模式
      NamingException - 如果遇到命名异常
    • search

      NamingEnumeration<SearchResult> search(Name name, Attributes matchingAttributes, String[] attributesToReturn) throws NamingException
      在单个上下文中搜索包含指定属性集的对象,并检索选定的属性。使用默认SearchControls设置执行搜索。

      要选择对象,matchingAttributes中的每个属性必须与对象的某个属性匹配。如果matchingAttributes为空或为null,则返回目标上下文中的所有对象。

      matchingAttributes中的属性A1被认为与对象的属性A2匹配,如果A1A2具有相同的标识符,并且A1的每个值等于A2的某个值。这意味着值的顺序不重要,并且A2可能包含“额外”值,而不影响比较。这也意味着如果A1没有值,则测试匹配等同于测试具有相同标识符的属性A2的存在。

      用于比较属性值的“相等性”的精确定义由底层目录服务定义。例如,它可能使用Object.equals方法,或者可能使用模式指定不同的相等操作。对于基于除相等性之外的操作进行匹配(例如子字符串比较),请使用带有过滤器参数的search方法的版本。

      对此DirContext进行更改时,对此方法的先前调用返回的枚举的影响是未定义的。

      如果对象没有指定的属性,则目录将忽略不存在的属性,并返回对象确实具有的请求属性。

      目录可能返回比请求的属性更多的属性(请参阅类描述中的属性类型名称),但不允许返回任意的不相关属性。

      另请参阅类描述中的操作属性

      参数:
      name - 要搜索的上下文的名称
      matchingAttributes - 要搜索的属性。如果为空或为null,则返回目标上下文中的所有对象。
      attributesToReturn - 要返回的属性。null表示返回所有属性;空数组表示不返回任何属性。
      返回:
      非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 - 要返回的属性
      返回:
      非null的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中提到的attrvalue,有以下解释。

      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的枚举形式返回。每个SearchResult包含对象的名称和关于对象的其他信息(请参见SearchResult)。名称要么相对于搜索的目标上下文(由name参数命名),要么是URL字符串。如果目标上下文包含在枚举中(当cons指定搜索范围为SearchControls.OBJECT_SCOPESearchControls.SUBSTREE_SCOPE时可能发生),其名称为空字符串。如果cons参数指定返回属性,则SearchResult还可能包含匹配对象的属性。

      如果对象没有请求的属性,则将忽略该不存在的属性。将返回对象具有的请求属性。

      目录可能返回比请求的属性更多的属性(请参阅类描述中的属性类型名称),但不允许返回任意的不相关属性。

      另请参阅类描述中的操作属性

      参数:
      name - 要搜索的上下文或对象的名称
      filter - 用于搜索的过滤表达式;不可为null
      cons - 控制搜索的搜索控件。如果为null,则使用默认的搜索控件(相当于(new SearchControls()))。
      返回:
      满足过滤条件的对象的SearchResult的枚举;永不为null
      抛出:
      InvalidSearchFilterException - 如果指定的搜索过滤器不受基础目录支持或理解
      InvalidSearchControlsException - 如果搜索控件包含无效设置
      NamingException - 如果遇到命名异常
      参见:
    • search

      在指定的上下文或对象中搜索满足给定搜索过滤器的条目。根据搜索控件执行搜索。有关详细信息,请参见search(Name, String, SearchControls)
      参数:
      name - 要搜索的上下文或对象的名称
      filter - 用于搜索的过滤表达式;不可为null
      cons - 控制搜索的搜索控件。如果为null,则使用默认的搜索控件(相当于(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]。这样的变量可以用于过滤器语法中的attrvaluematchingrule产生的任何地方。当将字符串值的过滤器参数替换为变量时,过滤器将被解释为如果字符串替换了变量,其中任何具有过滤器中特殊意义的字符(如'*')都已根据RFC 2254的规则进行了转义。

      对于不使用字符串表示形式的某些或所有属性的目录,与属性值对应的过滤器参数可能是String以外的类型。例如,支持非结构化二进制值属性的目录应接受字节数组作为过滤器参数。任何其他类型的过滤器参数的解释(如果有)由该目录的服务提供程序确定,该服务提供程序将过滤器操作映射到基础目录中具有相应语义的操作。

      此方法返回结果的枚举。枚举中的每个元素都包含对象的名称和关于对象的其他信息(请参见SearchResult)。名称可以是相对于搜索的目标上下文(由name参数命名)的名称,也可以是URL字符串。如果目标上下文包含在枚举中(当cons指定搜索范围为SearchControls.OBJECT_SCOPESearchControls.SUBSTREE_SCOPE时可能发生),其名称为空字符串。

      SearchResult还可能包含匹配对象的属性,如果cons参数指定返回属性。

      如果对象没有请求的属性,则将忽略该不存在的属性。对象具有的那些请求的属性将被返回。

      目录可能返回比请求的属性更多的属性(请参见类描述中的属性类型名称),但不允许返回任意的不相关属性。

      如果向此方法提供具有无效变量替换的搜索过滤器,则结果是未定义的。对此DirContext进行更改时,对此方法的先前调用返回的枚举的影响是未定义的。

      另请参见类描述中的操作属性

      参数:
      name - 要搜索的上下文或对象的名称
      filterExpr - 用于搜索的过滤表达式。表达式可能包含形式为"{i}"的变量,其中i是非负整数。不可为null。
      filterArgs - 用于替换filterExpr中变量的参数数组。每个filterArgs[i]的值将替换每个"{i}"的出现。如果为null,则相当于一个空数组。
      cons - 控制搜索的搜索控件。如果为null,则使用默认的搜索控件(相当于(new SearchControls()))。
      返回:
      满足过滤条件的对象的SearchResult的枚举;永不为null
      抛出:
      ArrayIndexOutOfBoundsException - 如果filterExpr包含{i}表达式,其中i超出数组filterArgs的边界
      InvalidSearchControlsException - 如果cons包含无效设置
      InvalidSearchFilterException - 如果filterExprfilterArgs表示无效的搜索过滤器
      NamingException - 如果遇到命名异常
      参见:
    • search

      NamingEnumeration<SearchResult> search(String name, String filterExpr, Object[] filterArgs, SearchControls cons) throws NamingException
      在指定的上下文或对象中搜索满足给定搜索过滤器的条目。根据搜索控件执行搜索。有关详细信息,请参见search(Name, String, Object[], SearchControls)
      参数:
      name - 要搜索的上下文或对象的名称
      filterExpr - 用于搜索的过滤表达式。表达式可能包含形式为"{i}"的变量,其中i是非负整数。不可为null。
      filterArgs - 用于替换filterExpr中变量的参数数组。每个filterArgs[i]的值将替换每个"{i}"的出现。如果为null,则相当于一个空数组。
      cons - 控制搜索的搜索控件。如果为null,则使用默认的搜索控件(相当于(new SearchControls()))。
      返回:
      满足过滤条件的对象的SearchResult的枚举;永不为null
      抛出:
      ArrayIndexOutOfBoundsException - 如果filterExpr包含{i}表达式,其中i超出数组filterArgs的边界
      InvalidSearchControlsException - 如果cons包含无效设置
      InvalidSearchFilterException - 如果filterExprfilterArgs表示无效的搜索过滤器
      NamingException - 如果遇到命名异常