# Class MBeanServerNotification

java.lang.Object
java.util.EventObject
javax.management.Notification
javax.management.MBeanServerNotification

All Implemented Interfaces:
  `Serializable`

public class MBeanServerNotification extends Notification
Represents a notification emitted by the MBean Server through the MBeanServerDelegate MBean. The MBean Server emits the following types of notifications: MBean registration, MBean unregistration.

To receive MBeanServerNotifications, you need to register a listener with the `MBeanServerDelegate` MBean that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is `MBeanServerDelegate.DELEGATE_NAME`, which is `JMImplementation:type=MBeanServerDelegate`.

The following code prints a message every time an MBean is registered or unregistered in the MBean Server `mbeanServer`:

    private static final NotificationListener printListener = new NotificationListener() {
        public void handleNotification(Notification n, Object handback) {
            if (!(n instanceof MBeanServerNotification)) {
                System.out.println("Ignored notification of class " + n.getClass().getName());
                return;
            }
            MBeanServerNotification mbsn = (MBeanServerNotification) n;
            String what;
            if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION))
                what = "MBean registered";
            else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION))
                what = "MBean unregistered";
            else
                what = "Unknown type " + n.getType();
            System.out.println("Received MBean Server notification: " + what + ": " +
                    mbsn.getMBeanName());
        }
    };

    ...
        mbeanServer.addNotificationListener(
                MBeanServerDelegate.DELEGATE_NAME, printListener, null, null);

An MBean which is not an `MBeanServerDelegate` may also emit MBeanServerNotifications. In particular, there is a convention for MBeans to emit an MBeanServerNotification for a group of MBeans.

An MBeanServerNotification emitted to denote the registration or unregistration of a group of MBeans has the following characteristics:

- Its notification type is `"JMX.mbean.registered.group"` or `"JMX.mbean.unregistered.group"`, which can also be written `REGISTRATION_NOTIFICATION``+ ".group"` or `UNREGISTRATION_NOTIFICATION``+ ".group"`.
- Its MBean name is an ObjectName pattern that selects the set (or a superset) of the MBeans being registered or unregistered
- Its user data can optionally be set to an array of ObjectNames containing the names of all MBeans being registered or unregistered.

MBeans which emit these group registration/unregistration notifications will declare them in their `MBeanNotificationInfo`.

Since:
  1.5
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `REGISTRATION_NOTIFICATION`
  Notification type denoting that an MBean has been registered.
  `static final String`
  `UNREGISTRATION_NOTIFICATION`
  Notification type denoting that an MBean has been unregistered.

  ### Fields declared in class Notification

  `source`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MBeanServerNotification(String type, Object source, long sequenceNumber, ObjectName objectName)`
  Creates an MBeanServerNotification object specifying object names of the MBeans that caused the notification and the specified notification type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ObjectName`
  `getMBeanName()`
  Returns the object name of the MBean that caused the notification.

  ### Methods declared in class Notification

  `getMessage, getSequenceNumber, getTimeStamp, getType, getUserData, setSequenceNumber, setSource, setTimeStamp, setUserData, toString`

  ### Methods declared in class EventObject

  `getSource`

  ### Methods declared in class Object

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

- ## Field Details

  - ### REGISTRATION_NOTIFICATION

    public static final String REGISTRATION_NOTIFICATION
    Notification type denoting that an MBean has been registered. Value is "JMX.mbean.registered".
    See Also:
      - Constant Field Values

  - ### UNREGISTRATION_NOTIFICATION

    public static final String UNREGISTRATION_NOTIFICATION
    Notification type denoting that an MBean has been unregistered. Value is "JMX.mbean.unregistered".
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### MBeanServerNotification

    public MBeanServerNotification(String type, Object source, long sequenceNumber, ObjectName objectName)
    Creates an MBeanServerNotification object specifying object names of the MBeans that caused the notification and the specified notification type.
    Parameters:
      `type` - A string denoting the type of the notification. Set it to one these values: `REGISTRATION_NOTIFICATION`, `UNREGISTRATION_NOTIFICATION`.
      `source` - The MBeanServerNotification object responsible for forwarding MBean server notification.
      `sequenceNumber` - A sequence number that can be used to order received notifications.
      `objectName` - The object name of the MBean that caused the notification.

- ## Method Details

  - ### getMBeanName

    public ObjectName getMBeanName()
    Returns the object name of the MBean that caused the notification.
    Returns:
      the object name of the MBean that caused the notification.