模块 java.naming

类 InitialDirContext

java.lang.Object
javax.naming.InitialContext
javax.naming.directory.InitialDirContext
所有已实现的接口:
Context , DirContext
已知子类:
InitialLdapContext

public class InitialDirContext extends InitialContext implements DirContext
此类是执行目录操作的起始上下文。 InitialContext 的类描述中的文档(包括那些用于同步的文档)在这里适用。
自从:
1.3
参见:
  • 构造方法详细信息

    • InitialDirContext

      protected InitialDirContext(boolean lazy) throws NamingException
      构造一个初始 DirContext,并可选择不对其进行初始化。当调用 InitialDirContext 构造函数时环境参数的值未知时,子类中的构造函数可能会使用它。子类的构造函数将调用此构造函数,计算环境值,然后在返回前调用init()
      参数:
      lazy - true 表示不初始化初始 DirContext; false 相当于调用 new InitialDirContext()
      抛出:
      NamingException - 如果遇到命名异常
      自从:
      1.3
      参见:
    • InitialDirContext

      public InitialDirContext() throws NamingException
      构造初始 DirContext。没有提供环境属性。相当于 new InitialDirContext(null)
      抛出:
      NamingException - 如果遇到命名异常
      参见:
    • InitialDirContext

      public InitialDirContext(Hashtable <?,?> environment) throws NamingException
      使用提供的环境构造初始 DirContext。 javax.naming.InitialContext 类描述中讨论了环境属性。

      如果所提供环境的 java.naming.provider.url 属性包含使用 ldap 协议的 URL(或 URL 列表),则生成的 LdapContext 将使用由配置的 LdapDnsProviders 解析的 LDAP 服务:

      1. 如果这是使用 ldap 协议与 java.naming.provider.url 创建的第一个 InitialDirContext,则使用 ServiceLoader 机制来使用系统类加载器定位 LdapDnsProvider 实现。提供者定位的顺序是特定于实现的,实现可以自由缓存定位的提供者。
      2. 每个提供者的 lookupEndpoints 方法(如果已实例化)将使用 java.naming.provider.url 属性中的每个 URL 和环境的组合调用一次,直到提供者返回非空或所有提供者都已用尽。如果 LdapDnsProviders 均未返回非空 result,则实现将尽最大努力确定端点。加载或调用 LdapDnsProvider 时抛出的 ServiceConfigurationErrorErrorRuntimeException(如果遇到)将传播到调用线程。

      此构造函数不会修改 environment 或保存对它的引用,但可能会保存一个克隆。 environment 传递给构造函数后,调用者不应修改可变键和值。

      参数:
      environment - 用于创建初始 DirContext 的环境。 Null 表示空环境。
      抛出:
      NamingException - 如果遇到命名异常
  • 方法详情

    • getAttributes

      public Attributes  getAttributes(String  name) throws NamingException
      从接口 DirContext 复制的描述
      检索与命名对象关联的所有属性。有关详细信息,请参阅 DirContext.getAttributes(Name)
      指定者:
      getAttributes 在接口 DirContext
      参数:
      name - 从中检索属性的对象的名称
      返回:
      name 关联的属性集
      抛出:
      NamingException - 如果遇到命名异常
    • getAttributes

      public Attributes  getAttributes(String  name, String [] attrIds) throws NamingException
      从接口 DirContext 复制的描述
      检索与命名对象关联的选定属性。有关详细信息,请参阅 DirContext.getAttributes(Name, String[])
      指定者:
      getAttributes 在接口 DirContext
      参数:
      name - 从中检索属性的对象的名称
      attrIds - 要检索的属性的标识符。 null 表示应检索所有属性;空数组表示不应检索任何内容。
      返回:
      请求的属性;永不为空
      抛出:
      NamingException - 如果遇到命名异常
    • getAttributes

      public Attributes  getAttributes(Name  name) throws NamingException
      从接口 DirContext 复制的描述
      检索与命名对象关联的所有属性。请参阅有关属性模型、属性类型名称和操作属性的类描述。
      指定者:
      getAttributes 在接口 DirContext
      参数:
      name - 从中检索属性的对象的名称
      返回:
      name 关联的属性集。如果名称没有属性,则返回空属性集;从不为空。
      抛出:
      NamingException - 如果遇到命名异常
      参见:
    • getAttributes

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

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

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

      另请参阅类描述中的 Operational Attributes

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

      public void modifyAttributes(String  name, int mod_op, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      修改与命名对象关联的属性。有关详细信息,请参阅 DirContext.modifyAttributes(Name, int, Attributes)
      指定者:
      modifyAttributes 在接口 DirContext
      参数:
      name - 属性将被更新的对象的名称
      mod_op - 修改操作,其中之一:ADD_ATTRIBUTEREPLACE_ATTRIBUTEREMOVE_ATTRIBUTE
      attrs - 用于修改的属性;不能为空
      抛出:
      AttributeModificationException - 如果修改不能成功完成
      NamingException - 如果遇到命名异常
    • modifyAttributes

      public void modifyAttributes(Name  name, int mod_op, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      修改与命名对象关联的属性。未指定修改的顺序。在可能的情况下,修改以原子方式执行。
      指定者:
      modifyAttributes 在接口 DirContext
      参数:
      name - 属性将被更新的对象的名称
      mod_op - 修改操作,其中之一:ADD_ATTRIBUTEREPLACE_ATTRIBUTEREMOVE_ATTRIBUTE
      attrs - 用于修改的属性;不能为空
      抛出:
      AttributeModificationException - 如果修改不能成功完成
      NamingException - 如果遇到命名异常
      参见:
    • modifyAttributes

      public void modifyAttributes(String  name, ModificationItem [] mods) throws NamingException
      从接口 DirContext 复制的描述
      使用有序的修改列表修改与命名对象关联的属性。有关详细信息,请参阅 DirContext.modifyAttributes(Name, ModificationItem[])
      指定者:
      modifyAttributes 在接口 DirContext
      参数:
      name - 属性将被更新的对象的名称
      mods - 要执行的修改的有序序列;不能为空
      抛出:
      AttributeModificationException - 如果修改不能成功完成
      NamingException - 如果遇到命名异常
    • modifyAttributes

      public void modifyAttributes(Name  name, ModificationItem [] mods) throws NamingException
      从接口 DirContext 复制的描述
      使用有序的修改列表修改与命名对象关联的属性。修改按指定的顺序执行。每个修改指定一个修改操作代码和一个对其进行操作的属性。在可能的情况下,修改以原子方式执行。
      指定者:
      modifyAttributes 在接口 DirContext
      参数:
      name - 属性将被更新的对象的名称
      mods - 要执行的修改的有序序列;不能为空
      抛出:
      AttributeModificationException - 如果修改不能成功完成
      NamingException - 如果遇到命名异常
      参见:
    • bind

      public void bind(String  name, Object  obj, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      将名称连同关联的属性绑定到对象。有关详细信息,请参阅 DirContext.bind(Name, Object, Attributes)
      指定者:
      bind 在接口 DirContext
      参数:
      name - 要绑定的名称;可能不为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果未提供绑定的某些“强制”属性
      NamingException - 如果遇到命名异常
    • bind

      public void bind(Name  name, Object  obj, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      将名称连同关联的属性绑定到对象。如果 attrs 为 null,如果 objDirContext,则生成的绑定将具有与 obj 关联的属性,否则没有属性。如果 attrs 不为空,则生成的绑定将具有 attrs 作为其属性;与 obj 关联的任何属性都将被忽略。
      指定者:
      bind 在接口 DirContext
      参数:
      name - 要绑定的名称;可能不为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果未提供绑定的某些“强制”属性
      NamingException - 如果遇到命名异常
      参见:
    • rebind

      public void rebind(String  name, Object  obj, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      将名称连同关联的属性绑定到对象,覆盖任何现有绑定。有关详细信息,请参阅 DirContext.rebind(Name, Object, Attributes)
      指定者:
      rebind 在接口 DirContext
      参数:
      name - 要绑定的名称;可能不为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      InvalidAttributesException - 如果未提供绑定的某些“强制”属性
      NamingException - 如果遇到命名异常
    • rebind

      public void rebind(Name  name, Object  obj, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      将名称连同关联的属性绑定到对象,覆盖任何现有绑定。如果 attrs 为空且 objDirContext ,则使用 obj 中的属性。如果 attrs 为空且 obj 不是 DirContext ,则与已绑定在目录中的对象关联的任何现有属性保持不变。如果 attrs 不为空,则删除与目录中已绑定的对象关联的任何现有属性,并将 attrs 与命名对象关联。如果 objDirContextattrs 非空,则忽略 obj 的属性。
      指定者:
      rebind 在接口 DirContext
      参数:
      name - 要绑定的名称;可能不为空
      obj - 要绑定的对象;可能为空
      attrs - 与绑定关联的属性
      抛出:
      InvalidAttributesException - 如果未提供绑定的某些“强制”属性
      NamingException - 如果遇到命名异常
      参见:
    • createSubcontext

      public DirContext  createSubcontext(String  name, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      创建并绑定新的上下文以及关联的属性。有关详细信息,请参阅 DirContext.createSubcontext(Name, Attributes)
      指定者:
      createSubcontext 在接口 DirContext
      参数:
      name - 要创建的上下文的名称;可能不为空
      attrs - 与新创建的上下文关联的属性
      返回:
      新创建的上下文
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果 attrs 不包含创建所需的所有强制属性
      NamingException - 如果遇到命名异常
    • createSubcontext

      public DirContext  createSubcontext(Name  name, Attributes  attrs) throws NamingException
      从接口 DirContext 复制的描述
      创建并绑定新的上下文以及关联的属性。此方法使用给定的名称创建一个新的子上下文,将其绑定到目标上下文(由名称的终端原子组件以外的所有内容命名),并将提供的属性与新创建的对象相关联。所有中间上下文和目标上下文必须已经存在。如果 attrs 为 null,则此方法等效于 Context.createSubcontext()
      指定者:
      createSubcontext 在接口 DirContext
      参数:
      name - 要创建的上下文的名称;可能不为空
      attrs - 与新创建的上下文关联的属性
      返回:
      新创建的上下文
      抛出:
      NameAlreadyBoundException - 如果名称已经绑定
      InvalidAttributesException - 如果 attrs 不包含创建所需的所有强制属性
      NamingException - 如果遇到命名异常
      参见:
    • getSchema

      public DirContext  getSchema(String  name) throws NamingException
      从接口 DirContext 复制的描述
      检索与命名对象关联的模式。有关详细信息,请参阅 DirContext.getSchema(Name)
      指定者:
      getSchema 在接口 DirContext
      参数:
      name - 要检索其模式的对象的名称
      返回:
      与上下文关联的模式;永不为空
      抛出:
      OperationNotSupportedException - 如果模式不受支持
      NamingException - 如果遇到命名异常
    • getSchema

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

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

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

      指定者:
      getSchema 在接口 DirContext
      参数:
      name - 要检索其模式的对象的名称
      返回:
      与上下文关联的模式;永不为空
      抛出:
      OperationNotSupportedException - 如果模式不受支持
      NamingException - 如果遇到命名异常
    • getSchemaClassDefinition

      public DirContext  getSchemaClassDefinition(String  name) throws NamingException
      从接口 DirContext 复制的描述
      检索包含命名对象的类定义的架构对象的上下文。有关详细信息,请参阅 DirContext.getSchemaClassDefinition(Name)
      指定者:
      getSchemaClassDefinition 在接口 DirContext
      参数:
      name - 要检索其对象类定义的对象的名称
      返回:
      DirContext 包含命名对象的类定义;永不为空
      抛出:
      OperationNotSupportedException - 如果模式不受支持
      NamingException - 如果遇到命名异常
    • getSchemaClassDefinition

      public DirContext  getSchemaClassDefinition(Name  name) throws NamingException
      从接口 DirContext 复制的描述
      检索包含命名对象的类定义的架构对象的上下文。

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

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

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

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

      public NamingEnumeration <SearchResult > search(String  name, Attributes  matchingAttributes) throws NamingException
      从接口 DirContext 复制的描述
      在单个上下文中搜索包含一组指定属性的对象。有关详细信息,请参阅 DirContext.search(Name, Attributes)
      指定者:
      search 在接口 DirContext
      参数:
      name - 要搜索的上下文的名称
      matchingAttributes - 要搜索的属性
      返回:
      SearchResult 对象的枚举
      抛出:
      NamingException - 如果遇到命名异常
    • search

      public NamingEnumeration <SearchResult > search(Name  name, Attributes  matchingAttributes) throws NamingException
      从接口 DirContext 复制的描述
      在单个上下文中搜索包含一组指定属性的对象。此方法返回此类对象的所有属性。它等效于将 null 作为 attributesToReturn 参数提供给方法 search(Name, Attributes, String[])
      有关完整说明,请参阅 DirContext.search(Name, Attributes, String[])
      指定者:
      search 在接口 DirContext
      参数:
      name - 要搜索的上下文的名称
      matchingAttributes - 要搜索的属性
      返回:
      SearchResult 对象的枚举
      抛出:
      NamingException - 如果遇到命名异常
      参见:
    • search

      public NamingEnumeration <SearchResult > search(String  name, Attributes  matchingAttributes, String [] attributesToReturn) throws NamingException
      从接口 DirContext 复制的描述
      在单个上下文中搜索包含一组指定属性的对象,并检索选定的属性。有关详细信息,请参阅 DirContext.search(Name, Attributes, String[])
      指定者:
      search 在接口 DirContext
      参数:
      name - 要搜索的上下文的名称
      matchingAttributes - 要搜索的属性
      attributesToReturn - 要返回的属性
      返回:
      SearchResult 对象的非空枚举
      抛出:
      NamingException - 如果遇到命名异常
    • search

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

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

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

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

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

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

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

      另请参阅类描述中的 Operational Attributes

      指定者:
      search 在接口 DirContext
      参数:
      name - 要搜索的上下文的名称
      matchingAttributes - 要搜索的属性。如果为空或 null,则返回目标上下文中的所有对象。
      attributesToReturn - 要返回的属性。 null 表示要返回所有属性;空数组表示不返回任何内容。
      返回:
      SearchResult 对象的非空枚举。每个 SearchResult 包含由 attributesToReturn 标识的属性和相应对象的名称,相对于 name 命名的上下文命名。
      抛出:
      NamingException - 如果遇到命名异常
      参见:
    • search

      public NamingEnumeration <SearchResult > search(String  name, String  filter, SearchControls  cons) throws NamingException
      从接口 DirContext 复制的描述
      在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。有关详细信息,请参阅 DirContext.search(Name, String, SearchControls)
      指定者:
      search 在接口 DirContext
      参数:
      name - 要搜索的上下文或对象的名称
      filter - 用于搜索的过滤器表达式;不能为空
      cons - 控制搜索的搜索控件。如果为空,则使用默认搜索控件(相当于 (new SearchControls()) )。
      返回:
      满足过滤器的对象的 SearchResult 枚举。
      抛出:
      InvalidSearchFilterException - 如果底层目录不支持或不理解指定的搜索过滤器
      InvalidSearchControlsException - 如果搜索控件包含无效设置
      NamingException - 如果遇到命名异常
    • search

      public NamingEnumeration <SearchResult > search(Name  name, String  filter, SearchControls  cons) throws NamingException
      从接口 DirContext 复制的描述
      在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。

      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

      结果以SearchResults 的枚举形式返回。每个 SearchResult 包含对象的名称和有关该对象的其他信息(请参阅 SearchResult)。该名称要么是相对于搜索的目标上下文(由 name 参数命名),要么是一个 URL 字符串。如果目标上下文包含在枚举中(当 cons 指定搜索范围为 SearchControls.OBJECT_SCOPESearchControls.SUBSTREE_SCOPE 时可能),则其名称为空字符串。如果 cons 参数指定返回属性,则 SearchResult 也可能包含匹配对象的属性。

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

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

      另请参阅类描述中的 Operational Attributes

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

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

      public NamingEnumeration <SearchResult > search(Name  name, String  filterExpr, Object [] filterArgs, SearchControls  cons) throws NamingException
      从接口 DirContext 复制的描述
      在命名上下文或对象中搜索满足给定搜索过滤器的条目。按照搜索控件的指定执行搜索。

      filterExpr 的解释基于 RFC 2254。它可能还包含 {i} 形式的变量——其中 i 是一个整数——引用 filterArgs 数组中的对象。 filterExpr 的解释在其他方面与方法 search(Name, String, SearchControls)filter 参数相同。

      当变量 {i} 出现在搜索过滤器中时,表示要在该位置使用过滤器参数 filterArgs[i]。此类变量可用于 attrvaluematchingrule 产生式出现在 RFC 2254 第 4 节的过滤器语法中的任何地方。当字符串值过滤器参数替换变量时,过滤器被解释为好像字符串是在变量的位置,过滤器中具有特殊意义的任何字符(例如 '*' )已根据 RFC 2254 的规则进行了转义。

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

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

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

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

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

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

      另请参阅类描述中的 Operational Attributes

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