JavaTM 2 Platform
Standard Ed. 6

javax.naming.spi
介面 DirStateFactory

所有父級介面:
StateFactory

public interface DirStateFactory
extends StateFactory

此介面表示一個處理器,該處理器用來獲得物件的狀態和用於綁定的相應屬性。

JNDI 框架允許通過物件處理器動態載入物件實作。

DirStateFactory 擴展了 StateFactory,它允許將 Attributes 實例提供給 getStateToBind() 方法並由該方法返回。DirStateFactory 實作將由 DirContext 服務提供者使用。當調用者使用 DirContext.bind() 綁定物件時,還可以指定一個與該物件綁定在一起的屬性集合。要綁定的物件和屬性被傳遞給處理器的 getStateToBind() 方法。如果該處理器處理這些物件和屬性,則它會返回由物件和要綁定的屬性組成的相應對。如果該處理器沒有處理該物件,則必須返回 null。

例如,調用者可以將一個印表機物件與一些與印表機相關的屬性綁定在一起。

 ctx.rebind("inky", printer, printerAttrs);
用於 ctx 的 LDAP 服務提供者使用 DirStateFactory(直接通過 DirectoryManager.getStateToBind())並向它提供 printerprinterAttrs。用於 LDAP 目錄的處理器可以將 printer 轉換成一個屬性集,並將它們與 printerAttrs 合併在一起。然後服務提供者使用得到的屬性創建一個 LDAP 項並更新目錄。

因為 DirStateFactory 擴展了 StateFactory,所以它有兩個 getStateToBind() 方法,其中一個方法在屬性參數上不同於另一個方法。DirectoryManager.getStateToBind() 將只使用接受屬性參數的形式,而 NamingManager.getStateToBind() 將只使用不接受屬性參數的形式。

可以使用不同的參數多次調用 DirStateFactory 任何一種形式的 getStateToBind() 方法。該實作是執行緒安全的。

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

巢狀類別摘要
static class DirStateFactory.Result
          用於返回 DirStateFactory.getStateToBind() 的結果的物件/屬性對。
 
方法摘要
 DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
          在給定要傳輸的物件和屬性的情況下檢索用於綁定的物件的狀態。
 
從介面 javax.naming.spi.StateFactory 繼承的方法
getStateToBind
 

方法詳細資訊

getStateToBind

DirStateFactory.Result getStateToBind(Object obj,
                                      Name name,
                                      Context nameCtx,
                                      Hashtable<?,?> environment,
                                      Attributes inAttrs)
                                      throws NamingException
在給定要傳輸的物件和屬性的情況下檢索用於綁定的物件的狀態。

DirectoryManager.getStateToBind() 接連在狀態處理器中載入。如果某一處理器實作 DirStateFactory,則 DirectoryManager 將調用此方法;否則,它將調用 StateFactory.getStateToBind()。它將持續這樣做,直到某一處理器產生非 null 回應。

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

可以有選擇地使用 namenameCtx 參數來指定要創建的物件的名稱。有關詳細資訊,請參閱 ObjectFactory.getObjectInstance() 中“名稱和上下文參數”的描述。如果某一處理器使用 nameCtx,則它應該將其使用與共時存取同步,因為無法保證上下文實作是執行緒安全的。

nameinAttrsenvironment 參數都歸調用者所有。該實作不會修改這些物件或保存對它們的參考,儘管它可能保存對這些物件的副本的參考。此方法返回的物件歸調用者所有。該實作隨後不會對它進行修改。它或者包含一個同樣歸調用者所有的新 Attributes 物件,或者包含對原始 inAttrs 參數的參考。

參數:
obj - 將檢索其狀態的物件(可能為 null)。
name - 此物件相對於 nameCtx 的名稱,如果沒有指定名稱,則該參數為 null。
nameCtx - 一個上下文,name 參數是相對於該上下文指定的,如果 name 相對於預設初始上下文,則該參數為 null。
environment - 將在創建物件的狀態時使用的環境(可能為 null)。
inAttrs - 將與物件綁定在一起的屬性(可能為 null)。該處理器不得修改 inAttrs
返回:
一個 Result,它包含用於綁定的物件狀態和要綁定的相應屬性;如果該物件沒有使用此處理器,則返回 null。
拋出:
NamingException - 如果此處理器在試圖獲得物件的狀態時遇到異常,並且不再嘗試其他處理器。
另請參見:
DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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