## org.springframework.jmx.support
Class MBeanRegistrationSupport

    java.lang.Object
      org.springframework.jmx.support.MBeanRegistrationSupport

Direct Known Subclasses:
  ConnectorServerFactoryBean, MBeanExporter

    public class MBeanRegistrationSupport

extends Object

Provides supporting infrastructure for registering MBeans with an `MBeanServer`. The behavior when encountering an existing MBean at a given `ObjectName` is fully configurable allowing for flexible registration settings.

All registered MBeans are tracked and can be unregistered by calling the #`unregisterBeans()` method.

Sub-classes can receive notifications when an MBean is registered or unregistered by overriding the `onRegister(ObjectName)` and `onUnregister(ObjectName)` methods respectively.

By default, the registration process will fail if attempting to register an MBean using a `ObjectName` that is already used.

By setting the `registrationBehaviorName` property to `REGISTRATION_IGNORE_EXISTING` the registration process will simply ignore existing MBeans leaving them registered. This is useful in settings where multiple applications want to share a common MBean in a shared `MBeanServer`.

Setting `registrationBehaviorName` property to `REGISTRATION_REPLACE_EXISTING` will cause existing MBeans to be replaced during registration if necessary. This is useful in situations where you can't guarantee the state of your `MBeanServer`.

Since:
  2.0
Author:
  Rob Harrop, Juergen Hoeller
See Also:
  `setServer(javax.management.MBeanServer)`, `setRegistrationBehaviorName(java.lang.String)`, `MBeanExporter`

Field Summary
`protected Log` `logger` `Log` instance for this class.
`protected Set<ObjectName>` `registeredBeans` The beans that have been registered by this exporter.
`static int` `REGISTRATION_FAIL_ON_EXISTING` Constant indicating that registration should fail when attempting to register an MBean under a name that already exists.
`static int` `REGISTRATION_IGNORE_EXISTING` Constant indicating that registration should ignore the affected MBean when attempting to register an MBean under a name that already exists.
`static int` `REGISTRATION_REPLACE_EXISTING` Constant indicating that registration should replace the affected MBean when attempting to register an MBean under a name that already exists.
`protected MBeanServer` `server` The `MBeanServer` instance being used to register beans.

Constructor Summary
`MBeanRegistrationSupport()`

Method Summary
`protected void` `doRegister(Object mbean, ObjectName objectName)` Actually register the MBean with the server.
`protected void` `doUnregister(ObjectName objectName)` Actually unregister the specified MBean from the server.
`protected ObjectName[]` `getRegisteredObjectNames()` Return the `ObjectNames` of all registered beans.
`MBeanServer` `getServer()` Return the `MBeanServer` that the beans will be registered with.
`protected void` `onRegister(ObjectName objectName)` Called when an MBean is registered under the given `ObjectName`.
`protected void` `onRegister(ObjectName objectName, Object mbean)` Called when an MBean is registered under the given `ObjectName`.
`protected void` `onUnregister(ObjectName objectName)` Called when an MBean is unregistered under the given `ObjectName`.
`void` `setRegistrationBehavior(int registrationBehavior)` Specify what action should be taken when attempting to register an MBean under an `ObjectName` that already exists.
`void` `setRegistrationBehaviorName(String registrationBehavior)` Set the registration behavior by the name of the corresponding constant, e.g.
`void` `setServer(MBeanServer server)` Specify the `MBeanServer` instance with which all beans should be registered.
`protected void` `unregisterBeans()` Unregisters all beans that have been registered by an instance of this class.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### REGISTRATION_FAIL_ON_EXISTING

    public static final int REGISTRATION_FAIL_ON_EXISTING

  Constant indicating that registration should fail when attempting to register an MBean under a name that already exists.

  This is the default registration behavior.

  See Also:
    Constant Field Values

### REGISTRATION_IGNORE_EXISTING

    public static final int REGISTRATION_IGNORE_EXISTING

  Constant indicating that registration should ignore the affected MBean when attempting to register an MBean under a name that already exists.

  See Also:
    Constant Field Values

### REGISTRATION_REPLACE_EXISTING

    public static final int REGISTRATION_REPLACE_EXISTING

  Constant indicating that registration should replace the affected MBean when attempting to register an MBean under a name that already exists.

  See Also:
    Constant Field Values

### logger

    protected final Log logger

  `Log` instance for this class.

### server

    protected MBeanServer server

  The `MBeanServer` instance being used to register beans.

### registeredBeans

    protected final Set<ObjectName> registeredBeans

  The beans that have been registered by this exporter.

Constructor Detail

### MBeanRegistrationSupport

    public MBeanRegistrationSupport()

Method Detail

### setServer

    public void setServer(MBeanServer server)

  Specify the `MBeanServer` instance with which all beans should be registered. The `MBeanExporter` will attempt to locate an existing `MBeanServer` if none is supplied.

### getServer

    public final MBeanServer getServer()

  Return the `MBeanServer` that the beans will be registered with.

### setRegistrationBehaviorName

    public void setRegistrationBehaviorName(String registrationBehavior)

  Set the registration behavior by the name of the corresponding constant, e.g. "REGISTRATION_IGNORE_EXISTING".

  See Also:
    `setRegistrationBehavior(int)`, `REGISTRATION_FAIL_ON_EXISTING`, `REGISTRATION_IGNORE_EXISTING`, `REGISTRATION_REPLACE_EXISTING`

### setRegistrationBehavior

    public void setRegistrationBehavior(int registrationBehavior)

  Specify what action should be taken when attempting to register an MBean under an `ObjectName` that already exists.

  Default is REGISTRATION_FAIL_ON_EXISTING.

  See Also:
    `setRegistrationBehaviorName(String)`, `REGISTRATION_FAIL_ON_EXISTING`, `REGISTRATION_IGNORE_EXISTING`, `REGISTRATION_REPLACE_EXISTING`

### doRegister

    protected void doRegister(Object mbean,
                              ObjectName objectName)
                       throws JMException

  Actually register the MBean with the server. The behavior when encountering an existing MBean can be configured using the `setRegistrationBehavior(int)` and `setRegistrationBehaviorName(String)` methods.

  Parameters:
    `mbean` - the MBean instance
    `objectName` - the suggested ObjectName for the MBean
  Throws:
    `JMException` - if the registration failed

### unregisterBeans

    protected void unregisterBeans()

  Unregisters all beans that have been registered by an instance of this class.

### doUnregister

    protected void doUnregister(ObjectName objectName)

  Actually unregister the specified MBean from the server.

  Parameters:
    `objectName` - the suggested ObjectName for the MBean

### getRegisteredObjectNames

    protected final ObjectName[] getRegisteredObjectNames()

  Return the `ObjectNames` of all registered beans.

### onRegister

    protected void onRegister(ObjectName objectName,
                              Object mbean)

  Called when an MBean is registered under the given `ObjectName`. Allows subclasses to perform additional processing when an MBean is registered.

  The default implementation delegates to `onRegister(ObjectName)`.

  Parameters:
    `objectName` - the actual `ObjectName` that the MBean was registered with
    `mbean` - the registered MBean instance

### onRegister

    protected void onRegister(ObjectName objectName)

  Called when an MBean is registered under the given `ObjectName`. Allows subclasses to perform additional processing when an MBean is registered.

  The default implementation is empty. Can be overridden in subclasses.

  Parameters:
    `objectName` - the actual `ObjectName` that the MBean was registered with

### onUnregister

    protected void onUnregister(ObjectName objectName)

  Called when an MBean is unregistered under the given `ObjectName`. Allows subclasses to perform additional processing when an MBean is unregistered.

  The default implementation is empty. Can be overridden in subclasses.

  Parameters:
    `objectName` - the `ObjectName` that the MBean was registered with