JavaTM 2 Platform
Standard Ed. 6

javax.naming.directory
介面 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 的物件只要其父級是 DirContext 就可以有屬性。

JNDI 同時支持這兩種模型。由各個服務提供者決定將屬性“存儲”在何處。JNDI 客戶端在沒有對物件屬性是作為物件的一部分存儲,還是存儲在父物件中並與物件名稱關聯作出假設時,是最安全的。

屬性型別名稱

getAttributes()search() 方法中,可以通過提供一個屬性名稱(字元串)列表來提供要返回的屬性。得到的屬性可能與指定的屬性名稱不相同。這是因為有些目錄支持使其返回其他屬性的功能。這些功能包括屬性子類別化、屬性名同義詞和屬性語言碼。

在屬性子類別化中,屬性在類別層次中定義。例如,在某些目錄中,"name" 屬性可能是所有與名稱相關的屬性(包括 "commonName" 和 "surName")的父級類別。請求 "name" 屬性可能同時返回 "commonName" 和 "surName" 屬性。

使用屬性型別同義詞,目錄可以將多個名稱分派給同一屬性。例如,"cn" 和 "commonName" 可能指的是同一屬性。請求 "cn" 可能返回 "commonName" 屬性。

有些目錄支持屬性的語言碼。例如,向這種目錄請求 "description" 屬性可能返回以下全部屬性:

操作屬性

有些目錄具有“操作屬性”的概念,操作屬性指為了管理而與目錄物件關聯的屬性。一個操作屬性的範例是物件的存取控制列表。

getAttributes()search() 方法中,可以通過提供 null 作為要返回的屬性列表來指定所有與請求的物件關聯的屬性。返回的屬性 套件括操作屬性。要檢索操作屬性,必須顯式指定它們。

命名上下文

在某些方法中,必須將名稱解析為上下文(例如,在搜尋單個級別的上下文時)。這些方法的文檔使用術語命名上下文 來描述其名稱參數。對於這些方法,如果命名物件不是 DirContext,則拋出 NotContextException。除了這些方法之外,其他方法均不要求命名物件 為 DirContext。

參數

作為參數傳遞給任何方法的 AttributesSearchControls 或陣列物件不能被服務提供者修改。服務提供者可以在操作期間持有對它的參考,包括方法結果的所有列舉和對產生的所有參考的處理。調用者在此期間不應修改物件。任何方法返回的 Attributes 物件都歸調用者所有。調用者可以在以後修改它,而服務提供者則不能。

異常

此介面中的所有方法都可以拋出 NamingException 或其任一子類別。有關每個異常的詳細資訊,請參閱 NamingException 及其子類別。

從以下版本開始:
1.3
另請參見:
Context

欄位摘要
static int ADD_ATTRIBUTE
          此常數指定使用指定值添加屬性。
static int REMOVE_ATTRIBUTE
          此常數指定從屬性中刪除指定的屬性值。
static int REPLACE_ATTRIBUTE
          此常數指定使用指定值替換屬性。
 
從介面 javax.naming.Context 繼承的欄位
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
 
方法摘要
 void bind(Name name, Object obj, Attributes attrs)
          將名稱與關聯的屬性一起綁定到一個物件。
 void bind(String name, Object obj, Attributes attrs)
          將名稱與關聯的屬性一起綁定到一個物件。
 DirContext createSubcontext(Name name, Attributes attrs)
          創建並綁定新的上下文及關聯的屬性。
 DirContext createSubcontext(String name, Attributes attrs)
          創建並綁定新的上下文及關聯的屬性。
 Attributes getAttributes(Name name)
          檢索與命名物件關聯的所有屬性。
 Attributes getAttributes(Name name, String[] attrIds)
          檢索與命名物件關聯的選定屬性。
 Attributes getAttributes(String name)
          檢索所有與命名物件關聯的屬性。
 Attributes getAttributes(String name, String[] attrIds)
          檢索與命名物件關聯的選定屬性。
 DirContext getSchema(Name name)
          檢索與命名物件關聯的網要。
 DirContext getSchema(String name)
          檢索與命名物件關聯的網要。
 DirContext getSchemaClassDefinition(Name name)
          檢索包含命名物件類別定義的網要物件的上下文。
 DirContext getSchemaClassDefinition(String name)
          檢索包含命名物件類別定義的網要物件的上下文。
 void modifyAttributes(Name name, int mod_op, Attributes attrs)
          修改與命名物件關聯的屬性。
 void modifyAttributes(Name name, ModificationItem[] mods)
          使用有序的修改列表修改與命名物件關聯的屬性。
 void modifyAttributes(String name, int mod_op, Attributes attrs)
          修改與命名物件關聯的屬性。
 void modifyAttributes(String name, ModificationItem[] mods)
          使用有序的修改列表修改與命名物件關聯的屬性。
 void rebind(Name name, Object obj, Attributes attrs)
          將名稱與關聯的屬性一起綁定到一個物件,並覆寫任何現有綁定。
 void rebind(String name, Object obj, Attributes attrs)
          將名稱與關聯的屬性一起綁定到一個物件,並覆寫任何現有綁定。
 NamingEnumeration<SearchResult> search(Name name, Attributes matchingAttributes)
          在單個上下文中搜尋包含指定屬性集的物件。
 NamingEnumeration<SearchResult> search(Name name, Attributes matchingAttributes, String[] attributesToReturn)
          在單個上下文中搜尋包含指定屬性集的物件,並檢索選定的屬性。
 NamingEnumeration<SearchResult> search(Name name, String filterExpr, Object[] filterArgs, SearchControls cons)
          在命名上下文或物件中搜尋符合給定搜尋過濾器的項。
 NamingEnumeration<SearchResult> search(Name name, String filter, SearchControls cons)
          在命名上下文或物件中搜尋符合給定搜尋過濾器的項。
 NamingEnumeration<SearchResult> search(String name, Attributes matchingAttributes)
          在單個上下文中搜尋包含指定屬性集的物件。
 NamingEnumeration<SearchResult> search(String name, Attributes matchingAttributes, String[] attributesToReturn)
          在單個上下文中搜尋包含指定屬性集的物件,並檢索選定的屬性。
 NamingEnumeration<SearchResult> search(String name, String filterExpr, Object[] filterArgs, SearchControls cons)
          在命名上下文或物件中搜尋符合給定搜尋過濾器的項。
 NamingEnumeration<SearchResult> search(String name, String filter, SearchControls cons)
          在命名上下文或物件中搜尋符合給定搜尋過濾器的項。
 
從介面 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

另請參見:
ModificationItem, modifyAttributes(javax.naming.Name, int, javax.naming.directory.Attributes), 常數欄位值

REPLACE_ATTRIBUTE

static final int REPLACE_ATTRIBUTE
此常數指定使用指定值替換屬性。

如果屬性已經存在,則使用新的指定值替換所有現有值。如果該屬性不存在,則創建它。如果沒有指定值,則刪除屬性的所有值。如果要求屬性必須至少有一個值,則移除最後一個值時會將屬性一起移除。如果試圖將一個以上的值添加到單值屬性,則拋出 InvalidAttributeValueException

此常數的值為 2

另請參見:
ModificationItem, modifyAttributes(javax.naming.Name, int, javax.naming.directory.Attributes), 常數欄位值

REMOVE_ATTRIBUTE

static final int REMOVE_ATTRIBUTE
此常數指定從屬性中刪除指定的屬性值。

得到的屬性值集合不同於其以前的值集合和指定的值集合。如果沒有指定值,則刪除整個屬性。如果屬性不存在,或者指定值集合的某些或全部成員不存在,則可能忽略此情況並操作成功,也可能拋出 NamingException 指示此情況。如果要求屬性必須至少有一個值,則移除最後一個值時會將屬性一起移除。

此常數的值為 3

另請參見:
ModificationItem, modifyAttributes(javax.naming.Name, int, javax.naming.directory.Attributes), 常數欄位值
方法詳細資訊

getAttributes

Attributes getAttributes(Name name)
                         throws NamingException
檢索與命名物件關聯的所有屬性。請參閱關於屬性模型、屬性型別名稱和操作屬性的類別描述。

參數:
name - 物件名,通過該物件名檢索屬性
返回:
name 關聯的屬性集。如果名稱沒有屬性,則返回空屬性集;永遠不為 null。
拋出:
NamingException - 如果遇到命名異常
另請參見:
getAttributes(String), getAttributes(Name, String[])

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(Name, ModificationItem[])

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(Name, int, Attributes), ModificationItem

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,則 objDirContext 時所得綁定將具有與 obj 關聯的屬性,否則不具有屬性。如果 attrs 為非 null,則所得綁定的屬性將為 attrs;所有與 obj 關聯的屬性都將被忽略。

參數:
name - 要綁定的名稱;不能為空
obj - 要綁定的物件;可能為 null
attrs - 要與綁定關聯的屬性
拋出:
NameAlreadyBoundException - 如果已經綁定了 name
InvalidAttributesException - 如果沒有提供綁定的某些“強制”屬性
NamingException - 如果遇到命名異常
另請參見:
Context.bind(Name, Object), rebind(Name, Object, Attributes)

bind

void bind(String name,
          Object obj,
          Attributes attrs)
          throws NamingException
將名稱與關聯的屬性一起綁定到一個物件。有關詳細資訊,請參閱 bind(Name, Object, Attributes)

參數:
name - 要綁定的名稱;不能為空
obj - 要綁定的物件;可能為 null
attrs - 要與綁定關聯的屬性
拋出:
NameAlreadyBoundException - 如果已經綁定了 name
InvalidAttributesException - 如果沒有提供綁定的某些“強制”屬性
NamingException - 如果遇到命名異常

rebind

void rebind(Name name,
            Object obj,
            Attributes attrs)
            throws NamingException
將名稱與關聯的屬性一起綁定到一個物件,並覆寫任何現有綁定。如果 attrs 為 null 且 objDirContext,則使用 obj 中的屬性。如果 attrs 為 null 而 obj 不為 DirContext,則與已經在目錄中綁定的物件關聯的所有現有屬性均保持不變。如果 attrs 為非 null,則移除與已經在目錄中綁定的物件關聯的所有現有屬性,並將 attrs 與命名物件關聯起來。如果 objDirContextattrs 為非 null,則忽略 obj 的屬性。

參數:
name - 要綁定的名稱;不能為空
obj - 要綁定的物件;可能為 null
attrs - 要與綁定關聯的屬性
拋出:
InvalidAttributesException - 如果沒有提供綁定的某些“強制”屬性
NamingException - 如果遇到命名異常
另請參見:
Context.bind(Name, Object), bind(Name, Object, Attributes)

rebind

void rebind(String name,
            Object obj,
            Attributes attrs)
            throws NamingException
將名稱與關聯的屬性一起綁定到一個物件,並覆寫任何現有綁定。有關詳細資訊,請參閱 rebind(Name, Object, Attributes)

參數:
name - 要綁定的名稱;不能為空
obj - 要綁定的物件;可能為 null
attrs - 要與綁定關聯的屬性
拋出:
InvalidAttributesException - 如果沒有提供綁定的某些“強制”屬性
NamingException - 如果遇到命名異常

createSubcontext

DirContext createSubcontext(Name name,
                            Attributes attrs)
                            throws NamingException
創建並綁定新的上下文及關聯的屬性。此方法利用給定名稱創建新的子上下文,將其綁定在目標上下文(由名稱最終原子元件外的所有元件命名)中,並將提供的屬性與新創建的物件關聯起來。所有中間和目標上下文都必須已經存在。如果 attrs 為 null,則此方法等效於 Context.createSubcontext()

參數:
name - 要創建的上下文的名稱;不能為空
attrs - 要與新創建的上下文關聯的屬性
返回:
新創建的上下文
拋出:
NameAlreadyBoundException - 如果已經綁定了名稱
InvalidAttributesException - 如果 attrs 不包含創建所需要的所有強制屬性
NamingException - 如果遇到命名異常
另請參見:
Context.createSubcontext(Name)

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() 將返回 DirContext,它表示 "Person" 的(目錄)物件類別定義。

可以從物件類別定義檢索的資訊與目錄有關。

在 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 具有相同的標識符並且 A1 中的每個值都與 A2 的某個值相等,則認為 A1A2 比對。這意味著值的順序無關緊要,並且 A2 可以包含 A1 沒有的“額外”值,這些值對比較沒有影響。它還意味著如果 A1 沒有值,則測試是否比對等效於測試是否存在具有相同標識符的屬性 A2

在比較屬性值時使用的“相等性”的精確定義由基礎目錄服務定義。例如,它可能使用 Object.equals 方法或某種網要來指定不同的相等性操作。對於基於操作而非相等性的比對(如子字元串比較),需要使用帶有過濾器參數的 search 方法。

當對此 DirContext 作出更改時,對以前調用此方法返回的列舉的影響是不確定的。

如果物件沒有指定的屬性,則目錄將忽略不存在的屬性,並返回那些物件所具有的請求屬性。

目錄返回的屬性可能多於請求(請參閱類別描述中的屬性型別名稱),但不允許返回任意的、無關的屬性。

另請參閱類別描述中的操作屬性

參數:
name - 要搜尋的上下文的名稱
matchingAttributes - 要搜尋的屬性。如果為空或 null,則返回目標上下文中的所有物件。
attributesToReturn - 要返回的屬性。null 指示要返回所有屬性;空陣列指示不返回任何屬性。
返回:
SearchResult 物件的非 null 列舉。每個 SearchResult 都包含 attributesToReturn 所標識的屬性和相應物件的名稱,該名稱相對於 name 指定的上下文命名。
拋出:
NamingException - 如果遇到命名異常
另請參見:
SearchControls, SearchResult, search(Name, String, Object[], SearchControls)

search

NamingEnumeration<SearchResult> search(String name,
                                       Attributes matchingAttributes,
                                       String[] attributesToReturn)
                                       throws NamingException
在單個上下文中搜尋包含指定屬性集的物件,並檢索選定的屬性。有關詳細資訊,請參閱 search(Name, Attributes, String[])

參數:
name - 要搜尋的上下文的名稱
matchingAttributes - 要搜尋的屬性
attributesToReturn - 要返回的屬性
返回:
SearchResult 物件的非 null 列舉
拋出:
NamingException - 如果遇到命名異常

search

NamingEnumeration<SearchResult> search(Name name,
                                       Attributes matchingAttributes)
                                       throws NamingException
在單個上下文中搜尋包含指定屬性集的物件。此方法返回這些物件的所有屬性。這等效於向方法 search(Name, Attributes, String[]) 提供 null 作為 atributesToReturn 參數。
有關詳細資訊,請參閱 search(Name, Attributes, String[])

參數:
name - 要搜尋的上下文的名稱
matchingAttributes - 要搜尋的屬性
返回:
SearchResult 物件的列舉
拋出:
NamingException - 如果遇到命名異常
另請參見:
search(Name, Attributes, String[])

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"。

應該使用適當的 Java (Unicode) 字元表示過濾器字元串中的所有非 ASCII 字元,不能將其編碼為 UTF-8 八位組。或者,也可以使用 RFC 2254 中描述的“十六進制編碼的反斜槓(backslash-hexcode)”符號。

如果目錄不支持部分或全部其屬性的字元串表示形式,則可以使用過濾器參數的形式為 Object 的 search 方法。然後,這種目錄的服務提供者會將過濾器參數轉換為其特定於服務的表示形式,以供過濾器計算使用。請參閱 search(Name, String, Object[], SearchControls)

RFC 2254 為過濾器定義了某些操作符,包括子字元串比對、相等性、近似比對、大於、小於。這些操作符被映射到基礎目錄中具有相應語義的操作符。例如,對於相等操作符,假定目錄具有比對的規則來定義過濾器中屬性的“相等性”。則此規則將用於檢查濾器中指定的屬性與目錄中的物件屬性的相等性。類似地,如果目錄具有用於排序的比對規則,則此規則將用於進行“大於”和“小於”比較。

並不是 RFC 2254 中定義的所有操作符都可用於所有屬性。當操作符不可用時,拋出異常 InvalidSearchFilterException

結果返回在 SearchResult 的列舉中。每個 SearchResult 都包含物件名和關於該物件的其他資訊(請參閱 SearchResult)。名稱或者相對於搜尋的目標上下文(由 name 參數命名),或者為 URL 字元串。如果目標上下文包括在列舉(這可能發生在 cons 指定 SearchControls.OBJECT_SCOPESearchControls.SUBSTREE_SCOPE 的搜尋範圍時)中,則其名稱為空字元串。SearchResult 還可能包含比對物件的屬性,如果 cons 參數指定返回該屬性的話。

如果物件不具有請求的屬性,則忽略不存在的屬性。僅返回那些物件具有的請求的屬性。

目錄返回的屬性可能多於請求(請參閱類別描述中的屬性型別名稱),但是不允許返回任意的、無關的屬性。

另請參閱類別描述中的操作屬性

參數:
name - 要搜尋的上下文或物件的名稱
filter - 要用於搜尋的過濾器表達式;不能為 null
cons - 控制搜尋的搜尋控制元件。如果為 null,則使用預設的搜尋控制元件(等效於 (new SearchControls()))。
返回:
符合過濾器的物件的 SearchResult 所組成的列舉;永遠不為 null
拋出:
InvalidSearchFilterException - 如果基礎目錄不支持或者不理解指定的搜尋過濾器
InvalidSearchControlsException - 如果搜尋控制元件包含無效的設置
NamingException - 如果遇到命名異常
另請參見:
search(Name, String, Object[], SearchControls), SearchControls, SearchResult

search

NamingEnumeration<SearchResult> search(String name,
                                       String filter,
                                       SearchControls cons)
                                       throws NamingException
在命名上下文或物件中搜尋符合給定搜尋過濾器的項。按照搜尋控制元件的指定執行搜尋。有關詳細資訊,請參見 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 第 4 節的過濾器語法中出現,這些變數就可以使用。當使用字元串值的過濾器參數替換變數時,過濾器被解釋為好像給定了取代變數的字元串,同時根據 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 - 如果帶有 filterArgsfilterExpr 表示無效的搜尋過濾器
NamingException - 如果遇到命名異常
另請參見:
search(Name, Attributes, String[]), MessageFormat

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 - 如果帶有 filterArgsfilterExpr 表示無效的搜尋過濾器
NamingException - 如果遇到命名異常

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only