# 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`
Modifier and Type
Field
Description
`protected Object`
`source`
This field hides the `EventObject.source` field in the parent class to make it non-transient and therefore part of the serialized form.

## 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`
Modifier and Type
Method
Description
`String`
`getMessage()`
Get the notification message.
`long`
`getSequenceNumber()`
Get the notification sequence number.
`long`
`getTimeStamp()`
Get the notification timestamp.
`String`
`getType()`
Get the notification type.
`Object`
`getUserData()`
Get the user data.
`void`
`setSequenceNumber(long sequenceNumber)`
Set the notification sequence number.
`void`
`setSource(Object source)`
Sets the source.
`void`
`setTimeStamp(long timeStamp)`
Set the notification timestamp.
`void`
`setUserData(Object userData)`
Set the user data.
`String`
`toString()`
Returns a String representation of this notification.

### Methods declared in class EventObject

`getSource`
Modifier and Type
Method
Description
`Object`
`getSource()`
The object on which the Event initially occurred.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

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