public interface NotificationBroadcaster
Notificationを発行するMBeanが実装しているインタフェースです。このインタフェースにより、リスナーを通知リスナーとしてMBeanに登録できます。
MBeanは、通知の発行時に、addNotificationListener
を使って追加され、かつremoveNotificationListener
を使って削除されていない各リスナーを考慮に入れます。リスナーに対してフィルタが提供された場合、およびフィルタのisNotificationEnabled
メソッドがfalseを返す場合、そのリスナーは無視されます。それ以外の場合、通知、およびaddNotificationListener
に提供されたハンドバック・オブジェクトを使って、リスナーのhandleNotification
メソッドが呼び出されます。
同一のリスナーが複数回追加される場合、追加された数だけ考慮されます。これは、1つのリスナーを異なるフィルタやハンドバック・オブジェクトを使って追加する場合に、しばしば役立ちます。
このインタフェースの実装は、フィルタやリスナーのメソッドが呼び出されるスレッドにより異なることがあります。
フィルタまたはリスナーのメソッド呼出しによりException
がスローされる場合、他のリスナーの呼出しがその例外により妨げられないようにする必要があります。ただし、メソッド呼出しによりError
がスローされる場合は、その時点で通知の処理を停止することが推奨されています。また、Error
を通知の送信側に送ることが可能であれば、そうしてください。
新しいコードは、NotificationEmitter
インタフェースを使用する必要があります。
このインタフェースおよびNotificationEmitter
の実装では、同期を注意深く行う必要があります。特に、実装がリスナーの呼出し時にロックを保持するのは、良い方法ではありません。通知のディスパッチ中にリスナーのリストが変更される可能性に対処する良い方法は、このリストでCopyOnWriteArrayList
を使用することです。
修飾子と型 | メソッドと説明 |
---|---|
void |
addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
このMBeanにリスナーを追加します。
|
MBeanNotificationInfo[] |
getNotificationInfo()
このMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知型を示す配列を返します。
|
void |
removeNotificationListener(NotificationListener listener)
このMBeanからリスナーを削除します。
|
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException
listener
- ブロードキャスタが発行した通知を処理するリスナー・オブジェクト。filter
- フィルタ・オブジェクト。フィルタがnullの場合、通知処理の前にフィルタは適用されない。handback
- 通知の発行時にリスナーに送信される不透明なオブジェクト。Notificationブロードキャスタ・オブジェクトは、このオブジェクトを使用できない。このオブジェクトは、手を加えない状態で、通知とともにリスナーへ送り返されなければならない。IllegalArgumentException
- リスナー・パラメータがnullの場合。removeNotificationListener(javax.management.NotificationListener)
void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
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)
MBeanNotificationInfo[] getNotificationInfo()
このMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知型を示す配列を返します。
この配列に記述されていない通知をMBeanが送信しても、不正ではありません。ただし一部のMBeanサーバー・クライアントは、正しく機能するために、作成される配列に依存する場合があります。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.