JavaTM 2 Platform
Standard Ed. 6

javax.management
介面 NotificationEmitter

所有父級介面:
NotificationBroadcaster
所有已知實作類別:
CounterMonitor, GaugeMonitor, JMXConnectorServer, MBeanServerDelegate, Monitor, NotificationBroadcasterSupport, RelationService, RequiredModelMBean, RMIConnectorServer, StandardEmitterMBean, StringMonitor, Timer

public interface NotificationEmitter
extends NotificationBroadcaster

由發出 Notifications 的 MBean 實作的介面。它允許某個偵聽器向該 MBean 註冊為通知偵聽器。

通知排程

MBean 發出通知時,它會考慮每個已經使用 addNotificationListener 添加、且之後沒有使用 removeNotificationListener 移除的偵聽器。如果該偵聽器同時提供一個過濾器,且過濾器的 isNotificationEnabled 方法返回 false,則忽略該偵聽器。否則,將利用通知調用偵聽器的 handleNotification 方法,同時向 addNotificationListener 提供 handback 物件。

如果多次添加同一個偵聽器,則認為該偵聽器被添加的次數等於實際被添加的次數。在添加相同的偵聽器的同時使用不同的過濾器或 handback 物件常常很有用。

根據調用過濾器和偵聽器方法的執行緒,此介面的實作可能有所不同。

如果過濾器或偵聽器的方法調用拋出 Exception,則該異常不應該阻止調用其他偵聽器。但是,如果方法調用拋出 Error,則建議在此處停止對通知的處理,如果 Error 可以傳播到通知的發送方,則更應該這樣做。

新程式碼應該優先使用此介面,而不是 NotificationBroadcaster 介面。

應該注意保持此介面的實作與 NotificationBroadcaster 的實作之間的同步。需要特別指出的是,讓某個實作在調用偵聽器時持有鎖定不是一個好主意。偵聽器列表在排程通知時可能發生更改,處理這種可能性的一個好的策略是對列表使用 CopyOnWriteArrayList

從以下版本開始:
1.5

方法摘要
 void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          從此 MBean 移除一個偵聽器。
 
從介面 javax.management.NotificationBroadcaster 繼承的方法
addNotificationListener, getNotificationInfo, removeNotificationListener
 

方法詳細資訊

removeNotificationListener

void removeNotificationListener(NotificationListener listener,
                                NotificationFilter filter,
                                Object handback)
                                throws ListenerNotFoundException

從此 MBean 移除一個偵聽器。該 MBean 必須有一個與給定 listenerfilterhandback 參數完全比對的偵聽器。如果有多個此類別偵聽器,則只移除一個偵聽器。

當且僅當在要移除的偵聽器中 filterhandback 參數為 null 時,這兩個參數才可以為 null。

參數:
listener - 以前添加到此 MBean 中的偵聽器。
filter - 添加偵聽器時指定的過濾器。
handback - 添加偵聽器時指定的回送。
拋出:
ListenerNotFoundException - 如果沒有在該 MBean 中註冊偵聽器,或者沒有用給定的過濾器和回送註冊它。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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