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(null, 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、インタフェースNotificationBroadcasterlistener - 通知を受け取るリスナー。filter - フィルタ・オブジェクト。 フィルタがnullの場合、通知処理の前にフィルタは適用されない。 handback - 通知の発行時にリスナーに送信される不透明なオブジェクト。 Notificationブロードキャスタ・オブジェクトは、このオブジェクトを使用できない。 このオブジェクトは、手を加えない状態で、通知とともにリスナーへ送り返されなければならない。 IllegalArgumentException - リスナーがnullの場合。removeNotificationListener(javax.management.NotificationListener)public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
NotificationBroadcasterremoveNotificationListener、インタフェースNotificationBroadcasterlistener - 以前にこの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、インタフェースNotificationEmitterlistener - 以前にこのMBeanに追加されたリスナー。filter - リスナーの追加時に指定されたフィルタ。handback - リスナーの追加時に指定されたハンドバック。ListenerNotFoundException - リスナーがMBeanに登録されていない場合、または指定されたフィルタおよびハンドバックで登録されていない場合。public MBeanNotificationInfo[] getNotificationInfo()
NotificationBroadcasterこのMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知型を示す配列を返します。
この配列に記述されていない通知をMBeanが送信しても、不正ではありません。 ただし一部のMBeanサーバー・クライアントは、正しく機能するために、作成される配列に依存する場合があります。
getNotificationInfo、インタフェースNotificationBroadcasterpublic 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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。