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:
  • Field Details

    • logger

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

      protected @Nullable 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

      public final @Nullable 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