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

クラスNotificationBroadcasterSupport

  • すべての実装されたインタフェース:
    NotificationBroadcaster, NotificationEmitter
    直系の既知のサブクラス:
    JMXConnectorServer, Monitor, RelationService, Timer


    public class NotificationBroadcasterSupport
    extends Object
    implements NotificationEmitter

    NotificationEmitterインタフェースの実装を提供します。 これは、通知を送信するMBeanのスーパー・クラスとして使用可能です。

    デフォルトでは、通知ディスパッチ・モデルは同期的です。 つまり、スレッドがsendNotificationを呼び出すと、そのスレッド内で各リスナーのNotificationListener.handleNotificationメソッドが呼び出されます。 このデフォルトをオーバーライドするには、サブクラス内でhandleNotificationをオーバーライドするか、Executorをコンストラクタに渡します。

    フィルタまたはリスナーのメソッド呼出しによりExceptionがスローされる場合、ほかのリスナーの呼出しはその例外により妨げられません。 ただし、フィルタ、Executor.execute、またはhandleNotification (Excecutorが指定されていない場合)のメソッド呼出しによりErrorがスローされる場合、このErrorsendNotificationの呼出し側に送られます。

    通常、JMX Remote API (「JMXConnector」を参照)を使って追加されたリモート・リスナーは、同期的には呼び出されません。 つまり、sendNotificationの終了時点では、リモート・リスナーが通知を受け取ったかどうかは保証されません。

    導入されたバージョン:
    1.5
    • コンストラクタの詳細

      • NotificationBroadcasterSupport

        public NotificationBroadcasterSupport​()
        NotificationBroadcasterSupportを構築します。ここで、各リスナーは通知を送信するスレッドにより呼び出されます。 このコンストラクタはNotificationBroadcasterSupport(null, null)と同等です。
      • NotificationBroadcasterSupport

        public NotificationBroadcasterSupport​(Executor executor)
        NotificationBroadcasterSupportを構築します。ここで、各リスナーは指定したExecutorを使って呼び出されます。 nullのNotificationFilterを使ってリスナーが追加されたか、送信中の通知に対してisNotificationEnabledがtrueを返す場合、sendNotificationの呼出し時にリスナーが選択されます。 sendNotificationを呼び出したスレッド内で、NotificationFilter.isNotificationEnabledの呼出しが実行されます。 次に、選択したリスナーごとに、handleNotificationメソッドを呼び出すコマンドを使ってexecutor.executeが呼び出されます。 このコンストラクタはNotificationBroadcasterSupport(null, null)と同等です。
        パラメータ:
        executor - sendNotificationメソッドにより、各通知の送信に使用されるexecutor。 nullの場合、sendNotificationを呼び出すスレッドによりhandleNotificationメソッド自体が呼び出される。
        導入されたバージョン:
        1.6
      • NotificationBroadcasterSupport

        public NotificationBroadcasterSupport​(MBeanNotificationInfo... info)

        送信可能な通知に関する情報を使って、NotificationBroadcasterSupportを構築します。 各リスナーは、通知を送信するスレッドにより呼び出されます。 このコンストラクタはNotificationBroadcasterSupport(null, info)と同等です。

        info配列が空ではない場合、コンストラクタにより、info.clone()によるのと同様にこれが複製されます。getNotificationInfo()を呼び出すたびに、新しい複製が返されます。

        パラメータ:
        info - このMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知型を示す配列。 nullの場合、空の配列と同等。
        導入されたバージョン:
        1.6
      • NotificationBroadcasterSupport

        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の場合、空の配列と同等。
        導入されたバージョン:
        1.6
    • メソッドの詳細

      • addNotificationListener

        public void addNotificationListener​(NotificationListener listener,
                                            NotificationFilter filter,
                                            Object handback)
        リスナーを追加します。
        定義:
        addNotificationListener、インタフェース: NotificationBroadcaster
        パラメータ:
        listener - 通知を受け取るリスナー。
        filter - フィルタ・オブジェクト。 フィルタがnullの場合、通知処理の前にフィルタは適用されない。
        handback - 通知の発行時にリスナーに送信される不透明なオブジェクト。 Notificationブロードキャスタ・オブジェクトは、このオブジェクトを使用できない。 このオブジェクトは、手を加えない状態で、通知とともにリスナーへ送り返されなければならない。
        例外:
        IllegalArgumentException - リスナーがnullの場合。
        関連項目:
        removeNotificationListener(javax.management.NotificationListener)
      • removeNotificationListener

        public void removeNotificationListener​(NotificationListener listener,
                                               NotificationFilter filter,
                                               Object handback)
                                        throws ListenerNotFoundException
        インタフェースからコピーされた説明: NotificationEmitter

        このMBeanからリスナーを削除します。 MBeanは、指定されたlistenerfilter、およびhandbackパラメータと正確に一致するリスナーを持っている必要があります。 該当するリスナーが複数存在する場合、そのうちの1つだけが削除されます。

        削除されるリスナー内でnullが指定されている場合にのみ、filterおよびhandbackパラメータはnullになります。

        定義:
        removeNotificationListener、インタフェース: NotificationEmitter
        パラメータ:
        listener - 以前にこのMBeanに追加されたリスナー。
        filter - リスナーの追加時に指定されたフィルタ。
        handback - リスナーの追加時に指定されたハンドバック。
        例外:
        ListenerNotFoundException - リスナーがMBeanに登録されていない場合、または指定されたフィルタおよびハンドバックで登録されていない場合。
      • getNotificationInfo

        public MBeanNotificationInfo[] getNotificationInfo​()
        インタフェースからコピーされた説明: NotificationBroadcaster

        このMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知型を示す配列を返します。

        この配列に記述されていない通知をMBeanが送信しても、不正ではありません。 ただし一部のMBeanサーバー・クライアントは、正しく機能するために、作成される配列に依存する場合があります。

        定義:
        getNotificationInfo、インタフェース: NotificationBroadcaster
        戻り値:
        可能な通知の配列。
      • sendNotification

        public void sendNotification​(Notification notification)
        通知を送信します。 Executorがコンストラクタ内で指定された場合、選択したリスナーに通知を配信するため、リスナーごとに1つのタスクが割り当てられます。
        パラメータ:
        notification - 送信する通知。
      • handleNotification

        protected void handleNotification​(NotificationListener listener,
                                          Notification notif,
                                          Object handback)

        このメソッドは、リスナーに通知を送信するため、sendNotificationによって呼び出されます。 通知の配信方法を変更する場合、たとえば通知を別々のスレッドで配信する場合などは、サブクラス内でオーバーライドできます。

        このメソッドのデフォルト実装は、次と同等です。

         listener.handleNotification(notif, handback);
         
        パラメータ:
        listener - 通知の配信先リスナー。
        notif - リスナーに配信される通知。
        handback - リスナーの追加時に指定されたハンドバック・オブジェクト。