複製鏈接
請複製以下鏈接發送給好友

javax.naming.event

鎖定
在訪問命名和目錄服務時提供對事件通知的支持。 此包定義 Java Naming and Directory InterfaceTM (JNDI) 的事件通知操作。 JNDI 向使用 Java 編程語言編寫的應用程序提供命名和目錄功能。它被設計成與任何特定的命名或目錄服務實現無關。因此可以使用共同的方式對多種服務(新的、新出現的及已經部署的服務)進行訪問。
外文名
javax.naming.event
所屬學科
計算機
定    義
在訪問命名和目錄服務時提供對事件通知的支持

javax.naming.event命名事件

此包定義 NamingEvent 類以表示由命名/目錄服務生成的事件。它還定義 Context 和 DirContext 的子接口(分別稱為 EventContext 和 EventDirContext),應用程序可以通過這些子接口註冊它們感興趣的、由上下文觸發的事件。
NamingEvent 表示在命名或目錄服務中發生的事件。有兩種命名事件:
影響名稱空間的事件(添加/移除/重命名對象)
影響對象內容的事件。
這兩種事件分別由對應的偵聽器處理:NamespaceChangeListener 或 ObjectChangeListener。
例如,應用程序可以按以下方式註冊對上下文中的對象進行的其感興趣的更改:
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());

javax.naming.event線程問題

將事件指派給偵聽器時,偵聽器方法(如 objectChanged())可以在沒有執行調用 addNamingListener() 的某個線程中執行。由服務提供程序選擇要使用的線程。將一個事件指派給多個偵聽器時,服務提供程序可以選擇(通常建議這樣做)在各個線程中併發執行偵聽器方法。
當偵聽器實例調用 NamingEvent.getEventContext() 時,它必須考慮到其他線程可能將併發使用該上下文。同樣,在通過 addNamingListener() 註冊偵聽器時,註冊線程也必須考慮到類似的可能性,即服務提供程序稍後可能在新創建的線程中調用這些偵聽器。因為一般不保證 Context 實例是線程安全的,所以必須根據需要同步所有上下文操作。

javax.naming.event異常處理

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

javax.naming.event包規範

以下文檔可以在 Java 技術站點找到:
JNDI API Document (Postscript)
JNDI API Document (PDF)
從以下版本開始:
1.3