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`.