JavaTM 2 Platform
Standard Ed. 6

javax.naming.spi
介面 StateFactory

所有已知子介面:
DirStateFactory

public interface StateFactory

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

JNDI 框架允許通過物件處理器 動態載入物件實作。例如,當尋找綁定在名稱空間中的印表機時,如果列印服務將印表機的名稱綁定到 Reference,則可以使用該印表機 Reference 創建一個印表機物件,從而尋找的調用者可以在尋找後直接在該印表機物件上操作。

ObjectFactory 負責創建特定型別的物件。在上述範例中,可以有一個用來創建 Printer 物件的 PrinterObjectFactory

對於相反過程,當將物件綁定到名稱空間中時,JNDI 將提供狀態處理器。繼續印表機的範例,假設印表機物件被更新和重新綁定:

 ctx.rebind("inky", printer);
 
用於 ctx 的服務提供者使用一個狀態處理器來獲得綁定到其名稱空間的 printer 的狀態。用於 Printer 型別物件的狀態處理器可能返回一個用來存儲在命名系統中的更緊湊的物件。

狀態處理器必須實作 StateFactory 介面。此外,處理器類別必須是公共的,必須有一個不接受任何參數的公共建構子。

可以使用不同的參數多次調用狀態處理器的 getStateToBind() 方法。該實作是執行緒安全的。

StateFactory 與只實作 Context 介面的服務提供者一起使用。DirStateFactory 與實作 DirContext 介面的服務提供者一起使用。

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

方法摘要
 Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)
          檢索用於綁定的物件狀態。
 

方法詳細資訊

getStateToBind

Object getStateToBind(Object obj,
                      Name name,
                      Context nameCtx,
                      Hashtable<?,?> environment)
                      throws NamingException
檢索用於綁定的物件狀態。

NamingManager.getStateToBind() 接連在狀態處理器中載入,並在這些處理器上調用此方法,直到某一處理器產生非 null 應答。DirectoryManager.getStateToBind() 接連在狀態處理器中載入。如果某一處理器實作 DirStateFactory,則 DirectoryManager 調用 DirStateFactory.getStateToBind();否則它調用 StateFactory.getStateToBind()

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

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

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

參數:
obj - 將檢索其狀態的非 null 物件。
name - 此物件相對於 nameCtx 的名稱,如果沒有指定名稱,則該參數為 null。
nameCtx - 一個上下文,name 參數是相對於該上下文指定的,如果 name 相對於預設初始上下文,則該參數為 null。
environment - 將在創建物件的狀態時使用的環境(可能為 null)。
返回:
用於綁定的物件狀態;如果該處理器沒有返回任何更改,則返回 null。
拋出:
NamingException - 如果此處理器在試圖獲得物件的狀態時遇到異常,並且不再嘗試其他處理器。
另請參見:
NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable), 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