public class NotificationBroadcasterSupport extends Object implements NotificationEmitter
NotificationEmitter
インタフェースの実装を提供します。これは、通知を送信する MBean のスーパークラスとして使用可能です。
デフォルトでは、通知ディスパッチモデルは同期的です。つまり、スレッドが sendNotification を呼び出すと、そのスレッド内で各リスナーの NotificationListener.handleNotification
メソッドが呼び出されます。このデフォルトをオーバーライドするには、サブクラス内で handleNotification
をオーバーライドするか、Executor をコンストラクタに渡します。
フィルタまたはリスナーのメソッド呼び出しにより Exception
がスローされる場合、ほかのリスナーの呼び出しはその例外により妨げられません。ただし、フィルタ、Executor.execute
、または handleNotification
(Excecutor
が指定されていない場合) のメソッド呼び出しにより Error
がスローされる場合、この Error
は sendNotification
の呼び出し側に送られます。
通常、JMX Remote API (「JMXConnector」を参照) を使って追加されたリモートリスナーは、同期的には呼び出されません。つまり、sendNotification の終了時点では、リモートリスナーが通知を受け取ったかどうかは保証されません。
コンストラクタと説明 |
---|
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)
通知を送信します。
|
public NotificationBroadcasterSupport()
NotificationBroadcasterSupport(null, null)
と同等です。public NotificationBroadcasterSupport(Executor executor)
Executor
を使って呼び出されます。null の NotificationFilter
を使ってリスナーが追加されたか、送信中の通知に対して isNotificationEnabled
が true を返す場合、sendNotification
の呼び出し時にリスナーが選択されます。sendNotification
を呼び出したスレッド内で、NotificationFilter.isNotificationEnabled
の呼び出しが実行されます。次に、選択したリスナーごとに、handleNotification
メソッドを呼び出すコマンドを使って executor.execute
が呼び出されます。このコンストラクタは NotificationBroadcasterSupport(executor, null)
と同等です。executor
- sendNotification
メソッドにより、各通知の送信に使用される executor。null の場合、sendNotification
を呼び出すスレッドにより handleNotification
メソッド自体が呼び出される。public NotificationBroadcasterSupport(MBeanNotificationInfo... info)
送信可能な通知に関する情報を使って、NotificationBroadcasterSupport を構築します。各リスナーは、通知を送信するスレッドにより呼び出されます。このコンストラクタは NotificationBroadcasterSupport(null, info)
と同等です。
info
配列が空ではない場合、コンストラクタにより、info.clone()
によるのと同様にこれが複製されます。getNotificationInfo()
を呼び出すたびに、新しい複製が返されます。
info
- この MBean が送信する可能性のある各通知について、その通知の Java クラス名と通知型を示す配列。null の場合、空の配列と同等。public NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
送信可能な通知に関する情報を使って、NotificationBroadcasterSupport を構築します。各リスナーは、指定した Executor
を使って呼び出されます。
null の NotificationFilter
を使ってリスナーが追加されたか、送信中の通知に対して isNotificationEnabled
が true を返す場合、sendNotification
の呼び出し時にリスナーが選択されます。sendNotification
を呼び出したスレッド内で、NotificationFilter.isNotificationEnabled
の呼び出しが実行されます。次に、選択したリスナーごとに、handleNotification
メソッドを呼び出すコマンドを使って executor.execute
が呼び出されます。
info
配列が空ではない場合、コンストラクタにより、info.clone()
によるのと同様にこれが複製されます。getNotificationInfo()
を呼び出すたびに、新しい複製が返されます。
executor
- sendNotification
メソッドにより、各通知の送信に使用される executor。null の場合、sendNotification
を呼び出すスレッドにより handleNotification
メソッド自体が呼び出される。info
- この MBean が送信する可能性のある各通知について、その通知の Java クラス名と通知型を示す配列。null の場合、空の配列と同等。public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
addNotificationListener
、インタフェース: NotificationBroadcaster
listener
- 通知を受け取るリスナー。filter
- フィルタオブジェクト。フィルタが null の場合、通知処理の前にフィルタは適用されない。handback
- 通知の発行時にリスナーに送信される不透明なオブジェクト。Notification ブロードキャスタオブジェクトは、このオブジェクトを使用できない。このオブジェクトは、手を加えない状態で、通知とともにリスナーへ送り返されなければならない。IllegalArgumentException
- リスナーが null の場合。removeNotificationListener(javax.management.NotificationListener)
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
NotificationBroadcaster
removeNotificationListener
、インタフェース: NotificationBroadcaster
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)
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
NotificationEmitter
この MBean からリスナーを削除します。MBean は、指定された listener
、filter
、および handback
パラメータと正確に一致するリスナーを持っている必要があります。該当するリスナーが複数存在する場合、そのうちの 1 つだけが削除されます。
削除されるリスナー内で null が指定されている場合、filter
および handback
パラメータは null になります。
removeNotificationListener
、インタフェース: NotificationEmitter
listener
- 以前にこの MBean に追加されたリスナー。filter
- リスナーの追加時に指定されたフィルタ。handback
- リスナーの追加時に指定されたハンドバック。ListenerNotFoundException
- リスナーが MBean に登録されていない場合、または指定されたフィルタおよびハンドバックで登録されていない場合。public MBeanNotificationInfo[] getNotificationInfo()
NotificationBroadcaster
この MBean が送信する可能性のある各通知について、その通知の Java クラス名と通知型を示す配列を返します。
この配列に記述されていない通知を MBean が送信しても、不正ではありません。ただし一部の MBean サーバークライアントは、正しく機能するために、作成される配列に依存する場合があります。
getNotificationInfo
、インタフェース: NotificationBroadcaster
public void sendNotification(Notification notification)
Executor
がコンストラクタ内で指定された場合、選択したリスナーに通知を配信するため、リスナーごとに 1 つのタスクが割り当てられます。notification
- 送信する通知。protected void handleNotification(NotificationListener listener, Notification notif, Object handback)
このメソッドは、リスナーに通知を送信するため、sendNotification
によって呼び出されます。通知の配信方法を変更する場合、たとえば通知を別々のスレッドで配信する場合などは、サブクラス内でオーバーライドできます。
このメソッドのデフォルト実装は、次と同等です。
listener.handleNotification(notif, handback);
listener
- 通知の配信先リスナー。notif
- リスナーに配信される通知。handback
- リスナーの追加時に指定されたハンドバックオブジェクト。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.