JavaTM 2 Platform
Standard Ed. 6

javax.naming.spi
介面 DirObjectFactory

所有父級介面:
ObjectFactory

public interface DirObjectFactory
extends ObjectFactory

此介面表示一個處理器,該處理器用來在給定某一物件以及有關該物件的屬性的情況下創建該物件。

JNDI 框架允許通過物件處理器 動態載入物件實作。有關詳細資訊,請參見 ObjectFactory

DirObjectFactory 擴展了 ObjectFactory,它允許將 Attributes 實例提供給 getObjectInstance() 方法。DirObjectFactory 實作將由 DirContext 服務提供者使用。除了從目錄中讀取物件之外,該服務提供者還可能已經擁有對該物件處理器有用的屬性,以檢查該處理器是否應該處理物件。例如,LDAP 樣式的服務提供者可能已經讀取物件的“物件類別 (objectclass)”。CORBA 物件處理器可能只對具有 "objectclass=corbaObject" 的 LDAP 項感興趣。通過使用 LDAP 服務提供者所提供的屬性,CORBA 物件處理器可以快速排除不需要關注的物件,而非 CORBA 物件處理器可以快速排除與 CORBA 有關的 LDAP 項。

從以下版本開始:
1.3
另請參見:
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable), DirectoryManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes), ObjectFactory

方法摘要
 Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes attrs)
          使用位置或參考資訊以及指定的屬性創建一個物件。
 
從介面 javax.naming.spi.ObjectFactory 繼承的方法
getObjectInstance
 

方法詳細資訊

getObjectInstance

Object getObjectInstance(Object obj,
                         Name name,
                         Context nameCtx,
                         Hashtable<?,?> environment,
                         Attributes attrs)
                         throws Exception
使用位置或參考資訊以及指定的屬性創建一個物件。

使用 environment 提供此物件的特殊需要。這種 environment 屬性的一個範例是使用者身份資訊。

DirectoryManager.getObjectInstance() 接連在物件處理器中進行載入。如果遇到 DirObjectFactory,它將調用 DirObjectFactory.getObjectInstance();否則它將調用 ObjectFactory.getObjectInstance()。它將持續這樣做,直到某一處理器產生非 null 應答。

當物件處理器拋出異常時,該異常被傳遞給 DirectoryManager.getObjectInstance() 的調用者。停止搜尋可能產生非 null 應答的其他處理器。物件處理器只有在可以確定它是唯一需要的處理器並且不應該再嘗試其他物件處理器時才拋出異常。如果此物件處理器無法使用所提供的參數創建物件,則它應該返回 null。

因為 DirObjectFactory 擴展了 ObjectFactory,所以它實際上有兩個 getObjectInstance() 方法,其中一個方法在屬性參數上不同於另一個方法。給出一個實作 DirObjectFactory 的處理器,DirectoryManager.getObjectInstance() 將只使用接受屬性參數的方法,而 NamingManager.getObjectInstance() 將只使用不接收屬性參數的方法。

有關 URL 上下文處理器和物件處理器其他屬性的描述,請參閱 ObjectFactory,它同樣適用於 DirObjectFactory

nameattrsenvironment 參數都歸調用者所有。該實作不會修改這些物件或保存對它們的參考,儘管它可能保存對這些物件的副本的參考。

參數:
obj - 套件含可在創建物件時使用的位置或參考資訊的物件(可能為 null)。
name - 此物件相對於 nameCtx 的名稱,如果沒有指定名稱,則該參數為 null。
nameCtx - 一個上下文,name 參數是相對於該上下文指定的,如果 name 相對於預設初始上下文,則該參數為 null。
environment - 創建物件時使用的環境(可能為 null)。
attrs - 套件含 obj 的某些屬性的屬性(可能為 null)。attrs 不一定擁有 obj 的所有屬性。如果物件處理器需要更多的屬性,則需要使用 obj 或者 namenameCtx 獲取。該處理器不得修改 attrs。
返回:
已創建的物件;如果無法創建物件,則返回 null。
拋出:
Exception - 如果此物件處理器在試圖創建物件時遇到異常,並且不再嘗試其他物件處理器。
另請參見:
DirectoryManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes), NamingManager.getURLContext(java.lang.String, java.util.Hashtable)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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