JavaTM 2 Platform
Standard Ed. 6

軟體套件 javax.naming.event

在存取命名和目錄服務時提供對事件通知的支持。

請參見:
          描述

介面摘要
EventContext 包含註冊/註銷偵聽器的一些方法,這些偵聽器在上下文中命名的物件發生更改時獲得觸發事件的通知。
EventDirContext 包含註冊偵聽器的一些方法,這些偵聽器在目錄上下文中命名的物件發生更改時將獲得觸發事件的通知。
NamespaceChangeListener 指定對名稱空間更改感興趣的偵聽器必須實作的方法。
NamingListener 此介面是處理 NamingEvent 的偵聽器介面的根。
ObjectChangeListener 指定事件型別為 OBJECT_CHANGEDNamingEvent 偵聽器必須實作的方法。
 

類別摘要
NamingEvent 此類別表示命名/目錄服務觸發的事件。
NamingExceptionEvent 此類別表示用來收集通知 NamingEvent 偵聽器的資訊的過程/進程拋出 NamingException 時觸發的事件。
 

軟體套件 javax.naming.event 的描述

在存取命名和目錄服務時提供對事件通知的支持。

此套件定義 Java Naming and Directory InterfaceTM (JNDI) 的事件通知操作。  JNDI 向使用 Java 程式語言編寫的應用程序提供命名和目錄功能。它被設計成與任何特定的命名或目錄服務實作無關。因此可以使用共同的方式對多種服務(新的、新出現的及已經部署的服務)進行存取。

命名事件

此套件定義 NamingEvent 類別以表示由命名/目錄服務產生的事件。它還定義 ContextDirContext 的子介面(分別稱為 EventContextEventDirContext),應用程序可以通過這些子介面註冊它們感興趣的、由上下文觸發的事件。

NamingEvent 表示在命名或目錄服務中發生的事件。有兩種命名事件:

這兩種事件分別由對應的偵聽器處理:NamespaceChangeListenerObjectChangeListener

例如,應用程序可以按以下方式註冊對上下文中的物件進行的其感興趣的更改:

EventContext src = 
    (EventContext)(new InitialContext()).lookup("o=wiz,c=us");
src.addNamingListener("ou=users", EventContext.ONELEVEL_SCOPE,
    new ChangeHandler());
...
class ChangeHandler implements ObjectChangeListener {
    public void objectChanged(NamingEvent evt) {
        System.out.println(evt.getNewBinding());
    }
    public void namingExceptionThrown(NamingExceptionEvent evt) {
        System.out.println(evt.getException());
    }
}

執行緒問題

將事件指派給偵聽器時,偵聽器方法(如 objectChanged())可以在沒有執行調用 addNamingListener() 的某個執行緒中執行。由服務提供者選擇要使用的執行緒。將一個事件指派給多個偵聽器時,服務提供者可以選擇(通常建議這樣做)在各個執行緒中共時執行偵聽器方法。

當偵聽器實例調用 NamingEvent.getEventContext() 時,它必須考慮到其他執行緒可能將共時使用該上下文。同樣,在通過 addNamingListener() 註冊偵聽器時,註冊執行緒也必須考慮到類似的可能性,即服務提供者稍後可能在新創建的執行緒中調用這些偵聽器。因為一般不保證 Context 實例是執行緒安全的,所以必須根據需要同步所有上下文操作。

異常處理

當偵聽器在上下文中註冊事件時,上下文可能需要進行一些內部處理以便收集產生事件所需的資訊。例如,上下文可能需要向伺服器請求註冊在伺服器上進行的感興趣更改,這些更改最終將被轉換為事件。如果發生了阻止收集關於事件的資訊的異常,則偵聽器將永遠無法獲得這些事件的通知。發生此類別異常時,將觸發 NamingExceptionEvent 來通知偵聽器。偵聽器的 namingExceptionThrown() 方法被調用(如上文範例程式碼所示),偵聽器被自動註銷。

套件規範

JNDI API 規範及相關文檔可在 JNDI documentation 中找到。

從以下版本開始:
1.3

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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