モジュール java.management
パッケージ javax.management

インタフェースNotificationBroadcaster

  • 既知のすべてのサブインタフェース:
    ModelMBean, ModelMBeanNotificationBroadcaster, NotificationEmitter
    既知のすべての実装クラス:
    CounterMonitor, GaugeMonitor, JMXConnectorServer, MBeanServerDelegate, Monitor, NotificationBroadcasterSupport, RelationService, RequiredModelMBean, RMIConnectorServer, StandardEmitterMBean, StringMonitor, Timer

    public interface NotificationBroadcaster

    Notificationを発行するMBeanが実装しているインタフェースです。 このインタフェースにより、リスナーを通知リスナーとしてMBeanに登録できます。

    通知ディスパッチ

    MBeanは、通知の発行時に、addNotificationListenerを使って追加され、かつremoveNotificationListenerを使って削除されていない各リスナーを考慮に入れます。 リスナーに対してフィルタが提供された場合、およびフィルタのisNotificationEnabledメソッドがfalseを返す場合、そのリスナーは無視されます。 それ以外の場合、通知、およびaddNotificationListenerに提供されたハンドバック・オブジェクトを使って、リスナーのhandleNotificationメソッドが呼び出されます。

    同一のリスナーが複数回追加される場合、追加された数だけ考慮されます。 これは、1つのリスナーを異なるフィルタやハンドバック・オブジェクトを使って追加する場合に、しばしば役立ちます。

    このインタフェースの実装は、フィルタやリスナーのメソッドが呼び出されるスレッドにより異なることがあります。

    フィルタまたはリスナーのメソッド呼出しによりExceptionがスローされる場合、他のリスナーの呼出しがその例外により妨げられないようにする必要があります。 ただし、メソッド呼出しによりErrorがスローされる場合は、その時点で通知の処理を停止することが推奨されています。また、Errorを通知の送信側に送ることが可能であれば、そうしてください。

    新しいコードは、NotificationEmitterインタフェースを使用する必要があります。

    このインタフェースおよびNotificationEmitterの実装では、同期を注意深く行う必要があります。 特に、実装がリスナーの呼出し時にロックを保持するのは、良い方法ではありません。 通知のディスパッチ中にリスナーのリストが変更される可能性に対処する良い方法は、このリストでCopyOnWriteArrayListを使用することです。

    導入されたバージョン:
    1.5