JavaTM 2 Platform
Standard Ed. 6

javax.management
類別 NotificationBroadcasterSupport

java.lang.Object
  繼承者 javax.management.NotificationBroadcasterSupport
所有已實作的介面:
NotificationBroadcaster, NotificationEmitter
直接已知子類別:
JMXConnectorServer, Monitor, RelationService, Timer

public class NotificationBroadcasterSupport
extends Object
implements NotificationEmitter

提供 NotificationEmitter 介面的實作。該類別可以用作發送通知的 MBean 的父級類別。

預設情況下,通知排程模型是同步的。也就是說,當某一執行緒調用 sendNotification 時,將在該執行緒中調用每個偵聽器的 NotificationListener.handleNotification 方法。可以通過覆寫子類別中的 handleNotification 或者通過將 Executor 傳遞給建構子來覆寫此預設值。

如果過濾器或偵聽器的方法調用拋出 Exception,則該異常不會阻止調用其他偵聽器。不過,如果過濾器、Executor.executehandleNotification 的方法調用(未指定任何 Excecutor 時)拋出 Error,則將該 Error 傳播到 sendNotification 的調用者。

通常不會同步調用使用 JMX Remote API 添加的遠端偵聽器(請參閱 JMXConnector)。也就是說,當 sendNotification 返回時,不保證任何遠端偵聽器都已經收到通知。

從以下版本開始:
1.5

建構子摘要
NotificationBroadcasterSupport()
          建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都由發送通知的執行緒調用。
NotificationBroadcasterSupport(Executor executor)
          建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都是使用給定 Executor 調用的。
NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
          使用關於可能發送的通知的資訊建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都是使用給定 Executor 調用的。
NotificationBroadcasterSupport(MBeanNotificationInfo... info)
          使用關於可能發送的通知的資訊建構一個 NotificationBroadcasterSupport。
 
方法摘要
 void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          添加一個偵聽器。
 MBeanNotificationInfo[] getNotificationInfo()
          返回一個陣列,指示此 MBean 可能發送的每個通知的 Java 類別名和通知型別。
protected  void handleNotification(NotificationListener listener, Notification notif, Object handback)
          為了向偵聽器發送通知,由該偵聽器的 sendNotification 調用此方法。
 void removeNotificationListener(NotificationListener listener)
          從此 MBean 移除一個偵聽器。
 void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          從此 MBean 移除一個偵聽器。
 void sendNotification(Notification notification)
          發送一個通知。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

NotificationBroadcasterSupport

public NotificationBroadcasterSupport()
建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都由發送通知的執行緒調用。此建構子等效於 NotificationBroadcasterSupport(null, null)


NotificationBroadcasterSupport

public NotificationBroadcasterSupport(Executor executor)
建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都是使用給定 Executor 調用的。在調用 sendNotification 時,如果使用 null NotificationFilter 添加了某個偵聽器,或者如果 isNotificationEnabled 為正在發送的通知返回 true,則選擇該偵聽器。對 NotificationFilter.isNotificationEnabled 的調用發生在調用了 sendNotification 的執行緒中。然後使用調用 handleNotification 方法的命令為每個選定的偵聽器調用 executor.execute。此建構子等效於 NotificationBroadcasterSupport(executor, null)

參數:
executor - 由方法 sendNotification 用來發送每個通知的執行程序。如果該參數為 null,則調用 sendNotification 的執行緒將調用 handleNotification 方法本身。
從以下版本開始:
1.6

NotificationBroadcasterSupport

public NotificationBroadcasterSupport(MBeanNotificationInfo... info)

使用關於可能發送的通知的資訊建構一個 NotificationBroadcasterSupport。每個偵聽器都由發送通知的執行緒調用。此建構子等效於 NotificationBroadcasterSupport(null, info)

如果 info 陣列不為空,則由該建構子複製它,這類似於使用 info.clone(),並且對 getNotificationInfo() 的每次調用都返回一個新副本。

參數:
info - 一個陣列,指示此 MBean 可能發送的每個通知、這些通知的 Java 類別的名稱和通知型別。該陣列可以為 null,它等效於一個空陣列。
從以下版本開始:
1.6

NotificationBroadcasterSupport

public NotificationBroadcasterSupport(Executor executor,
                                      MBeanNotificationInfo... info)

使用關於可能發送的通知的資訊建構一個 NotificationBroadcasterSupport,其中的每個偵聽器都是使用給定 Executor 調用的。

在調用 sendNotification 時,如果使用 null NotificationFilter 添加了某個偵聽器,或者如果 isNotificationEnabled 為正在發送的通知返回 true,則選擇該偵聽器。對 NotificationFilter.isNotificationEnabled 的調用發生在調用了 sendNotification 的執行緒中。然後使用調用 handleNotification 方法的命令為每個選定的偵聽器調用 executor.execute

如果 info 陣列不為空,則由該建構子複製它,這類似於使用 info.clone(),並且對 getNotificationInfo() 的每次調用都返回一個新副本。

參數:
executor - 由方法 sendNotification 用來發送每個通知的執行程序。如果該參數為 null,則調用 sendNotification 的執行緒將調用 handleNotification 方法本身。
info - 一個陣列,指示此 MBean 可能發送的每個通知、這些通知的 Java 類別的名稱和通知型別。該陣列可以為 null,它等效於一個空陣列。
從以下版本開始:
1.6
方法詳細資訊

addNotificationListener

public void addNotificationListener(NotificationListener listener,
                                    NotificationFilter filter,
                                    Object handback)
添加一個偵聽器。

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

removeNotificationListener

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

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

removeNotificationListener

public void removeNotificationListener(NotificationListener listener,
                                       NotificationFilter filter,
                                       Object handback)
                                throws ListenerNotFoundException
從介面 NotificationEmitter 複製的描述

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

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

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

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()
從介面 NotificationBroadcaster 複製的描述

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

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

指定者:
介面 NotificationBroadcaster 中的 getNotificationInfo
返回:
可能的通知陣列。

sendNotification

public void sendNotification(Notification notification)
發送一個通知。如果在建構子中指定了一個 Executor,則為每個選定的偵聽器提供一項任務,以便將通知發送給該偵聽器。

參數:
notification - 要發送的通知。

handleNotification

protected void handleNotification(NotificationListener listener,
                                  Notification notif,
                                  Object handback)

為了向偵聽器發送通知,由該偵聽器的 sendNotification 調用此方法。在子類別中可覆寫此方法,以更改通知傳遞的行為,例如在一個單獨的執行緒中傳遞該通知。

此方法的預設實作等效於

listener.handleNotification(notif, handback);
 

參數:
listener - 要接收通知的偵聽器。
notif - 傳遞給偵聽器的通知。
handback - 添加偵聽器時提供的回調物件。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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