Package 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
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
`Log` instance for this class.
`protected MBeanServer`
`server`
The `MBeanServer` instance being used to register beans.

## Constructor Summary

Constructors
Constructor
Description
`MBeanRegistrationSupport()`

## Method Summary

Modifier and Type
Method
Description
`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 final ObjectName[]`
`getRegisteredObjectNames()`
Return the `ObjectNames` of all registered beans.
`final 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`
`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 Details

### logger

protected final org.apache.commons.logging.Log logger
`Log` instance for this class.

### server

@Nullable protected MBeanServer server
The `MBeanServer` instance being used to register beans.

## Constructor Details

### MBeanRegistrationSupport

public MBeanRegistrationSupport()

## Method Details

### setServer

public void setServer(@Nullable 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

@Nullable public final MBeanServer getServer()
Return the `MBeanServer` that the beans will be registered with.

### 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 `setRegistrationPolicy(org.springframework.jmx.support.RegistrationPolicy)`.

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