Package org.apache.catalina.util

## Class LifecycleMBeanBase

- java.lang.Object
- - org.apache.catalina.util.LifecycleBase
  - - org.apache.catalina.util.LifecycleMBeanBase

- All Implemented Interfaces:
    `javax.management.MBeanRegistration`, `JmxEnabled`, `Lifecycle`
  Direct Known Subclasses:
    `Connector`, `ContainerBase`, `FailedContext`, `ManagerBase`, `MapperListener`, `NamingResourcesImpl`, `RealmBase`, `SimpleTcpCluster`, `StandardRoot`, `StandardServer`, `StandardService`, `StandardThreadExecutor`, `StandardVirtualThreadExecutor`, `ValveBase`, `WebappLoader`

      public abstract class LifecycleMBeanBase
      extends LifecycleBase
      implements JmxEnabled

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      `Lifecycle.SingleUse`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected javax.management.MBeanServer` | `mserver` |

    - ### Fields inherited from interface org.apache.catalina.Lifecycle

      `AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LifecycleMBeanBase()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `destroyInternal()` | Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.
    `java.lang.String` | `getDomain()` | Obtain the domain under which this component will be / has been registered.
    `protected abstract java.lang.String` | `getDomainInternal()` | Method implemented by sub-classes to identify the domain in which MBeans should be registered.
    `javax.management.ObjectName` | `getObjectName()` | Obtain the name under which this component has been registered with JMX.
    `protected abstract java.lang.String` | `getObjectNameKeyProperties()` | Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
    `protected void` | `initInternal()` | Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
    `void` | `postDeregister()` | Not used - NOOP.
    `void` | `postRegister​(java.lang.Boolean registrationDone)` | Not used - NOOP.
    `void` | `preDeregister()` | Not used - NOOP.
    `javax.management.ObjectName` | `preRegister​(javax.management.MBeanServer server, javax.management.ObjectName name)` | Allows the object to be registered with an alternative `MBeanServer` and/or `ObjectName`.
    `protected javax.management.ObjectName` | `register​(java.lang.Object obj, java.lang.String objectNameKeyProperties)` | Utility method to enable sub-classes to easily register additional components that don't implement `JmxEnabled` with an MBean server.
    `void` | `setDomain​(java.lang.String domain)` | Specify the domain under which this component should be registered.
    `protected void` | `unregister​(javax.management.ObjectName on)` | Utility method to enable sub-classes to easily unregister additional components that don't implement `JmxEnabled` with an MBean server.

    - ### Methods inherited from class org.apache.catalina.util.LifecycleBase

      `addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, startInternal, stop, stopInternal`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### mserver

          protected javax.management.MBeanServer mserver

  - ### Constructor Detail

    - #### LifecycleMBeanBase

          public LifecycleMBeanBase()

  - ### Method Detail

    - #### initInternal

          protected void initInternal()
                               throws LifecycleException

      Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
      Specified by:
        `initInternal` in class `LifecycleBase`
      Throws:
        `LifecycleException` - If the initialisation fails

    - #### destroyInternal

          protected void destroyInternal()
                                  throws LifecycleException

      Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.
      Specified by:
        `destroyInternal` in class `LifecycleBase`
      Throws:
        `LifecycleException` - If the destruction fails

    - #### setDomain

          public final void setDomain​(java.lang.String domain)

      Specify the domain under which this component should be registered. Used with components that cannot (easily) navigate the component hierarchy to determine the correct domain to use.
      Specified by:
        `setDomain` in interface `JmxEnabled`
      Parameters:
        `domain` - The name of the domain under which this component should be registered

    - #### getDomain

          public final java.lang.String getDomain()

      Obtain the domain under which this component will be / has been registered.
      Specified by:
        `getDomain` in interface `JmxEnabled`
      Returns:
        the domain under which this component will be / has been registered.

    - #### getDomainInternal

          protected abstract java.lang.String getDomainInternal()

      Method implemented by sub-classes to identify the domain in which MBeans should be registered.
      Returns:
        The name of the domain to use to register MBeans.

    - #### getObjectName

          public final javax.management.ObjectName getObjectName()

      Obtain the name under which this component has been registered with JMX.
      Specified by:
        `getObjectName` in interface `JmxEnabled`
      Returns:
        the name under which this component has been registered with JMX.

    - #### getObjectNameKeyProperties

          protected abstract java.lang.String getObjectNameKeyProperties()

      Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
      Returns:
        The string representation of the key properties component of the desired `ObjectName`

    - #### register

          protected final javax.management.ObjectName register​(java.lang.Object obj,
                                                               java.lang.String objectNameKeyProperties)

      Utility method to enable sub-classes to easily register additional components that don't implement `JmxEnabled` with an MBean server.
      Note: This method should only be used once `initInternal()` has been called and before `destroyInternal()` has been called.
      Parameters:
        `obj` - The object the register
        `objectNameKeyProperties` - The key properties component of the object name to use to register the object
      Returns:
        The name used to register the object

    - #### unregister

          protected final void unregister​(javax.management.ObjectName on)

      Utility method to enable sub-classes to easily unregister additional components that don't implement `JmxEnabled` with an MBean server.
      Note: This method should only be used once `initInternal()` has been called and before `destroyInternal()` has been called.
      Parameters:
        `on` - The name of the component to unregister

    - #### postDeregister

          public final void postDeregister()

      Not used - NOOP.
      Specified by:
        `postDeregister` in interface `javax.management.MBeanRegistration`

    - #### postRegister

          public final void postRegister​(java.lang.Boolean registrationDone)

      Not used - NOOP.
      Specified by:
        `postRegister` in interface `javax.management.MBeanRegistration`

    - #### preDeregister

          public final void preDeregister()
                                   throws java.lang.Exception

      Not used - NOOP.
      Specified by:
        `preDeregister` in interface `javax.management.MBeanRegistration`
      Throws:
        `java.lang.Exception`

    - #### preRegister

          public final javax.management.ObjectName preRegister​(javax.management.MBeanServer server,
                                                               javax.management.ObjectName name)
                                                        throws java.lang.Exception

      Allows the object to be registered with an alternative `MBeanServer` and/or `ObjectName`.
      Specified by:
        `preRegister` in interface `javax.management.MBeanRegistration`
      Throws:
        `java.lang.Exception`