StandardEmitterMBean (Java SE 15 & JDK 15)
Description: declaration: module: java.management, package: javax.management, class: StandardEmitterMBean
Keywords: javax.management.StandardEmitterMBean class

Module java.management
Package javax.management

# Class StandardEmitterMBean

java.lang.Object
javax.management.StandardMBean
javax.management.StandardEmitterMBean

All Implemented Interfaces:
  `DynamicMBean`, `MBeanRegistration`, `NotificationBroadcaster`, `NotificationEmitter`

    public class StandardEmitterMBean
    extends StandardMBean
    implements NotificationEmitter

An MBean whose management interface is determined by reflection on a Java interface, and that emits notifications.

The following example shows how to use the public constructor `StandardEmitterMBean(implementation, mbeanInterface, emitter)` to create an MBean emitting notifications with any implementation class name Impl, with a management interface defined (as for current Standard MBeans) by any interface Intf, and with any implementation of the interface `NotificationEmitter`. The example uses the class `NotificationBroadcasterSupport` as an implementation of the interface `NotificationEmitter`.

         MBeanServer mbs;
         ...
         final String[] types = new String[] {"sun.disc.space","sun.disc.alarm"};
         final MBeanNotificationInfo info = new MBeanNotificationInfo(
                                              types,
                                              Notification.class.getName(),
                                              "Notification about disc info.");
         final NotificationEmitter emitter =
                        new NotificationBroadcasterSupport(info);

         final Intf impl = new Impl(...);
         final Object mbean = new StandardEmitterMBean(
                                         impl, Intf.class, emitter);
         mbs.registerMBean(mbean, objectName);

Since:
  1.6
See Also:
  `StandardMBean`

- ## Constructor Summary

  Constructors
  Modifier | Constructor | Description
  --- | --- | ---
  `protected` | `StandardEmitterMBean​(Class<?> mbeanInterface, boolean isMXBean, NotificationEmitter emitter)` | Make an MBean whose management interface is specified by `mbeanInterface`, and where notifications are handled by the given `NotificationEmitter`.
  `protected` | `StandardEmitterMBean​(Class<?> mbeanInterface, NotificationEmitter emitter)` | Make an MBean whose management interface is specified by `mbeanInterface`, and where notifications are handled by the given `NotificationEmitter`.
  `` | `StandardEmitterMBean​(T implementation, Class<T> mbeanInterface, boolean isMXBean, NotificationEmitter emitter)` | Make an MBean whose management interface is specified by `mbeanInterface`, with the given implementation and where notifications are handled by the given `NotificationEmitter`.
  `` | `StandardEmitterMBean​(T implementation, Class<T> mbeanInterface, NotificationEmitter emitter)` | Make an MBean whose management interface is specified by `mbeanInterface`, with the given implementation and where notifications are handled by the given `NotificationEmitter`.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `sendNotification​(Notification n)` | Sends a notification.

  ### Methods declared in class javax.management.StandardMBean

  `cacheMBeanInfo, getCachedMBeanInfo, getClassName, getConstructors, getDescription, getDescription, getDescription, getDescription, getDescription, getDescription, getDescription, getImpact, getImplementation, getImplementationClass, getMBeanInfo, getMBeanInterface, getParameterName, getParameterName, postDeregister, postRegister, preDeregister, preRegister, setImplementation`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods declared in interface javax.management.DynamicMBean

  `getAttribute, getAttributes, invoke, setAttribute, setAttributes`

  ### Methods declared in interface javax.management.NotificationBroadcaster

  `addNotificationListener, getNotificationInfo, removeNotificationListener`

  ### Methods declared in interface javax.management.NotificationEmitter

  `removeNotificationListener`

- ## Constructor Details

  - ### StandardEmitterMBean

    public StandardEmitterMBean​(T implementation, Class<T> mbeanInterface, NotificationEmitter emitter)

    Make an MBean whose management interface is specified by `mbeanInterface`, with the given implementation and where notifications are handled by the given `NotificationEmitter`. The resultant MBean implements the `NotificationEmitter` interface by forwarding its methods to `emitter`. It is legal and useful for `implementation` and `emitter` to be the same object.

    If `emitter` is an instance of `NotificationBroadcasterSupport` then the MBean's `sendNotification` method will call `emitter.` `sendNotification`.

    The array returned by `NotificationBroadcaster.getNotificationInfo()` on the new MBean is a copy of the array returned by `emitter.` `getNotificationInfo()` at the time of construction. If the array returned by `emitter.getNotificationInfo()` later changes, that will have no effect on this object's `getNotificationInfo()`.

    Type Parameters:
      `T` - the implementation type of the MBean
    Parameters:
      `implementation` - the implementation of the MBean interface.
      `mbeanInterface` - a Standard MBean interface.
      `emitter` - the object that will handle notifications.
    Throws:
      `IllegalArgumentException` - if the `mbeanInterface` does not follow JMX design patterns for Management Interfaces, or if the given `implementation` does not implement the specified interface, or if `emitter` is null.

  - ### StandardEmitterMBean

    public StandardEmitterMBean​(T implementation, Class<T> mbeanInterface, boolean isMXBean, NotificationEmitter emitter)

    Make an MBean whose management interface is specified by `mbeanInterface`, with the given implementation and where notifications are handled by the given `NotificationEmitter`. This constructor can be used to make either Standard MBeans or MXBeans. The resultant MBean implements the `NotificationEmitter` interface by forwarding its methods to `emitter`. It is legal and useful for `implementation` and `emitter` to be the same object.

    If `emitter` is an instance of `NotificationBroadcasterSupport` then the MBean's `sendNotification` method will call `emitter.` `sendNotification`.

    The array returned by `NotificationBroadcaster.getNotificationInfo()` on the new MBean is a copy of the array returned by `emitter.` `getNotificationInfo()` at the time of construction. If the array returned by `emitter.getNotificationInfo()` later changes, that will have no effect on this object's `getNotificationInfo()`.

    Type Parameters:
      `T` - the implementation type of the MBean
    Parameters:
      `implementation` - the implementation of the MBean interface.
      `mbeanInterface` - a Standard MBean interface.
      `isMXBean` - If true, the `mbeanInterface` parameter names an MXBean interface and the resultant MBean is an MXBean.
      `emitter` - the object that will handle notifications.
    Throws:
      `IllegalArgumentException` - if the `mbeanInterface` does not follow JMX design patterns for Management Interfaces, or if the given `implementation` does not implement the specified interface, or if `emitter` is null.

  - ### StandardEmitterMBean

    protected StandardEmitterMBean​(Class<?> mbeanInterface, NotificationEmitter emitter)

    Make an MBean whose management interface is specified by `mbeanInterface`, and where notifications are handled by the given `NotificationEmitter`. The resultant MBean implements the `NotificationEmitter` interface by forwarding its methods to `emitter`.

    If `emitter` is an instance of `NotificationBroadcasterSupport` then the MBean's `sendNotification` method will call `emitter.` `sendNotification`.

    The array returned by `NotificationBroadcaster.getNotificationInfo()` on the new MBean is a copy of the array returned by `emitter.` `getNotificationInfo()` at the time of construction. If the array returned by `emitter.getNotificationInfo()` later changes, that will have no effect on this object's `getNotificationInfo()`.

    This constructor must be called from a subclass that implements the given `mbeanInterface`.

    Parameters:
      `mbeanInterface` - a StandardMBean interface.
      `emitter` - the object that will handle notifications.
    Throws:
      `IllegalArgumentException` - if the `mbeanInterface` does not follow JMX design patterns for Management Interfaces, or if `this` does not implement the specified interface, or if `emitter` is null.

  - ### StandardEmitterMBean

    protected StandardEmitterMBean​(Class<?> mbeanInterface, boolean isMXBean, NotificationEmitter emitter)

    Make an MBean whose management interface is specified by `mbeanInterface`, and where notifications are handled by the given `NotificationEmitter`. This constructor can be used to make either Standard MBeans or MXBeans. The resultant MBean implements the `NotificationEmitter` interface by forwarding its methods to `emitter`.

    If `emitter` is an instance of `NotificationBroadcasterSupport` then the MBean's `sendNotification` method will call `emitter.` `sendNotification`.

    The array returned by `NotificationBroadcaster.getNotificationInfo()` on the new MBean is a copy of the array returned by `emitter.` `getNotificationInfo()` at the time of construction. If the array returned by `emitter.getNotificationInfo()` later changes, that will have no effect on this object's `getNotificationInfo()`.

    This constructor must be called from a subclass that implements the given `mbeanInterface`.

    Parameters:
      `mbeanInterface` - a StandardMBean interface.
      `isMXBean` - If true, the `mbeanInterface` parameter names an MXBean interface and the resultant MBean is an MXBean.
      `emitter` - the object that will handle notifications.
    Throws:
      `IllegalArgumentException` - if the `mbeanInterface` does not follow JMX design patterns for Management Interfaces, or if `this` does not implement the specified interface, or if `emitter` is null.

- ## Method Details

  - ### sendNotification

    public void sendNotification​(Notification n)

    Sends a notification.

    If the `emitter` parameter to the constructor was an instance of `NotificationBroadcasterSupport` then this method will call `emitter.` `sendNotification`.

    Parameters:
      `n` - the notification to send.
    Throws:
      `ClassCastException` - if the `emitter` parameter to the constructor was not a `NotificationBroadcasterSupport`.