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