クラスNotificationBroadcasterSupport

java.lang.Object
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 (Executorが指定されていない場合)のメソッド・コールがErrorをスローした場合、そのErrorsendNotificationのコール元に伝播されます。

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

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

    コンストラクタ
    コンストラクタ
    説明
    NotificationBroadcasterSupportを構築します。ここで、各リスナーは通知を送信するスレッドにより呼び出されます。
    NotificationBroadcasterSupportを構築します。ここで、各リスナーは指定したExecutorを使って呼び出されます。
    送信可能な通知に関する情報を使って、NotificationBroadcasterSupportを構築します。各リスナーは、指定したExecutorを使って呼び出されます。
    送信可能な通知に関する情報を使って、NotificationBroadcasterSupportを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    リスナーを追加します。
    このMBeanが送信する可能性のある各通知について、その通知のJavaクラス名と通知タイプを示す配列を返します。
    protected void
    このメソッドは、リスナーに通知を送信するため、sendNotificationによって呼び出されます。
    void
    このMBeanからリスナーを削除します。
    void
    このMBeanからリスナーを削除します。
    void
    通知を送信します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • 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

      public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
      インタフェースからコピーされた説明: NotificationBroadcaster
      このMBeanからリスナーを削除します。 リスナーが別のハンドバック・オブジェクトまたは通知フィルタに登録されている場合、このリスナーに対応するすべてのエントリが削除されます。
      定義:
      removeNotificationListener、インタフェースNotificationBroadcaster
      パラメータ:
      listener - 以前にこのMBeanに追加されたリスナー。
      スロー:
      ListenerNotFoundException - リスナーがMBeanに登録されていない場合。
      関連項目:
    • 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 - リスナーの追加時に指定されたハンドバック・オブジェクト。