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 `registrationPolicy` property to `RegistrationPolicy.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 `registrationPolicy` property to `RegistrationPolicy.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, Phillip Webb
See Also:
  `setServer(javax.management.MBeanServer)`, `setRegistrationPolicy(org.springframework.jmx.support.RegistrationPolicy)`, `MBeanExporter`

### Field Summary

Fields
`protected Log` `logger` `Log` instance for this class.
`static int` `REGISTRATION_FAIL_ON_EXISTING` Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.FAIL_ON_EXISTING`
`static int` `REGISTRATION_IGNORE_EXISTING` Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.IGNORE_EXISTING`
`static int` `REGISTRATION_REPLACE_EXISTING` Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.REPLACE_EXISTING`
`protected MBeanServer` `server` The `MBeanServer` instance being used to register beans.

### Constructor Summary

Constructors
Constructor and Description
`MBeanRegistrationSupport()`

### Method Summary

Methods
`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)` Deprecated. since Spring 3.2, in favor of `setRegistrationPolicy(RegistrationPolicy)`
`void` `setRegistrationBehaviorName(String registrationBehavior)` Deprecated. since Spring 3.2, in favor of `setRegistrationPolicy(RegistrationPolicy)`
`void` `setRegistrationPolicy(RegistrationPolicy registrationPolicy)` The policy to use when attempting to register an MBean under an `ObjectName` that already exists.
`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

    @Deprecated
    public static final int REGISTRATION_FAIL_ON_EXISTING

Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.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

    @Deprecated
    public static final int REGISTRATION_IGNORE_EXISTING

Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.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

    @Deprecated
    public static final int REGISTRATION_REPLACE_EXISTING

Deprecated. since Spring 3.2, in favor of `RegistrationPolicy.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.

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

    @Deprecated
    public void setRegistrationBehaviorName(String registrationBehavior)

Deprecated. since Spring 3.2, in favor of `setRegistrationPolicy(RegistrationPolicy)`
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

    @Deprecated
    public void setRegistrationBehavior(int registrationBehavior)

Deprecated. since Spring 3.2, in favor of `setRegistrationPolicy(RegistrationPolicy)`
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`

#### setRegistrationPolicy

    public void setRegistrationPolicy(RegistrationPolicy registrationPolicy)

The policy to use when attempting to register an MBean under an `ObjectName` that already exists.

Parameters:
  `registrationPolicy` - the policy to use
Since:
  3.2

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