JavaTM 2 Platform
Standard Ed. 6

javax.management
介面 NotificationBroadcaster

所有已知子介面:
ModelMBean, ModelMBeanNotificationBroadcaster, NotificationEmitter
所有已知實作類別:
CounterMonitor, GaugeMonitor, JMXConnectorServer, MBeanServerDelegate, Monitor, NotificationBroadcasterSupport, RelationService, RequiredModelMBean, RMIConnectorServer, StandardEmitterMBean, StringMonitor, Timer

public interface NotificationBroadcaster

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

通知排程

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

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

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

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

新的程式碼應該使用 NotificationEmitter 介面。

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

從以下版本開始:
1.5

方法摘要
 void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          在此 MBean 中添加一個偵聽器。
 MBeanNotificationInfo[] getNotificationInfo()
          返回一個陣列,指示此 MBean 可能發送的每個通知的 Java 類別名和通知型別。
 void removeNotificationListener(NotificationListener listener)
          從此 MBean 移除一個偵聽器。
 

方法詳細資訊

addNotificationListener

void addNotificationListener(NotificationListener listener,
                             NotificationFilter filter,
                             Object handback)
                             throws IllegalArgumentException
在此 MBean 中添加一個偵聽器。

參數:
listener - 將處理廣播者發出的通知的偵聽器物件。
filter - 過濾器物件。如果 filter 為 null,則處理通知前不執行過濾。
handback - 發出通知時要發送回偵聽器的不透明物件。Notification 廣播者物件不能使用此物件。應該將通知不作更改地重新發送到偵聽器。
拋出:
IllegalArgumentException - 如果 Listener 參數為 null。
另請參見:
removeNotificationListener(javax.management.NotificationListener)

removeNotificationListener

void removeNotificationListener(NotificationListener listener)
                                throws ListenerNotFoundException
從此 MBean 移除一個偵聽器。如果已向不同的 handback 物件或通知過濾器註冊了該偵聽器,則移除與該偵聽器有關的所有項。

參數:
listener - 以前添加到此 MBean 中的偵聽器。
拋出:
ListenerNotFoundException - 如果沒有在 MBean 中註冊該偵聽器。
另請參見:
addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object), NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

getNotificationInfo

MBeanNotificationInfo[] getNotificationInfo()

返回一個陣列,指示此 MBean 可能發送的每個通知的 Java 類別名和通知型別。

MBean 發送此陣列中未描述的通知是合法的。但是,某些 MBean 伺服器的客戶端要想正常運行,可能要依賴完整的陣列。

返回:
可能的通知陣列。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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