|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface StateFactory
此介面表示一個處理器,該處理器用來獲得用於綁定的物件狀態。
JNDI 框架允許通過物件處理器 動態載入物件實作。例如,當尋找綁定在名稱空間中的印表機時,如果列印服務將印表機的名稱綁定到 Reference,則可以使用該印表機 Reference 創建一個印表機物件,從而尋找的調用者可以在尋找後直接在該印表機物件上操作。
ObjectFactory 負責創建特定型別的物件。在上述範例中,可以有一個用來創建 Printer 物件的 PrinterObjectFactory。
對於相反過程,當將物件綁定到名稱空間中時,JNDI 將提供狀態處理器。繼續印表機的範例,假設印表機物件被更新和重新綁定:
用於 ctx 的服務提供者使用一個狀態處理器來獲得綁定到其名稱空間的 printer 的狀態。用於 Printer 型別物件的狀態處理器可能返回一個用來存儲在命名系統中的更緊湊的物件。ctx.rebind("inky", printer);
狀態處理器必須實作 StateFactory 介面。此外,處理器類別必須是公共的,必須有一個不接受任何參數的公共建構子。
可以使用不同的參數多次調用狀態處理器的 getStateToBind() 方法。該實作是執行緒安全的。
StateFactory 與只實作 Context 介面的服務提供者一起使用。DirStateFactory 與實作 DirContext 介面的服務提供者一起使用。
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)
檢索用於綁定的物件狀態。 |
方法詳細資訊 |
---|
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。
可以有選擇地使用 name
和 nameCtx
參數來指定要創建的物件的名稱。有關詳細資訊,請參閱 ObjectFactory.getObjectInstance()
中“名稱和上下文參數”的描述。如果某一處理器使用 nameCtx
,則它應該將其使用與共時存取同步,因為無法保證上下文實作是執行緒安全的。
name 和 environment 參數都歸調用者所有。該實作不會修改這些物件或保存對它們的參考,儘管它可能保存對這些物件的副本的參考。
obj
- 將檢索其狀態的非 null 物件。name
- 此物件相對於 nameCtx
的名稱,如果沒有指定名稱,則該參數為 null。nameCtx
- 一個上下文,name
參數是相對於該上下文指定的,如果 name
相對於預設初始上下文,則該參數為 null。environment
- 將在創建物件的狀態時使用的環境(可能為 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。