# Class StandardWrapper

java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.core.ContainerBase
org.apache.catalina.core.StandardWrapper

All Implemented Interfaces:
  `ServletConfig, MBeanRegistration, NotificationBroadcaster, NotificationEmitter, Container, JmxEnabled, Lifecycle, Wrapper`

Direct Known Subclasses:
  `Tomcat.ExistingStandardWrapper`

public class StandardWrapper extends ContainerBase implements ServletConfig, Wrapper, NotificationEmitter
Standard implementation of the Wrapper interface that represents an individual servlet definition. No child Containers are allowed, and the parent Container must be a Context.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ContainerBase

  `ContainerBase.ContainerBackgroundProcessor, ContainerBase.ContainerBackgroundProcessorMonitor`

  ### Nested classes/interfaces inherited from interface Lifecycle

  `Lifecycle.SingleUse`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `asyncSupported`
  Async support
  `protected long`
  `available`
  The date and time at which this servlet will become available (in milliseconds since the epoch), or zero if the servlet is available.
  `protected final NotificationBroadcasterSupport`
  `broadcaster`
  The broadcaster that sends EE notifications.
  `protected int`
  `classLoadTime`
  `protected final AtomicInteger`
  `countAllocated`
  The count of allocations that are currently active.
  `protected static final String[]`
  `DEFAULT_SERVLET_METHODS`
  `protected boolean`
  `enabled`
  Enabled
  `protected final StandardWrapperFacade`
  `facade`
  The facade associated with this wrapper.
  `protected Servlet`
  `instance`
  The (single) possibly uninitialized instance of this servlet.
  `protected boolean`
  `instanceInitialized`
  Flag that indicates if this instance has been initialized
  `protected boolean`
  `isJspServlet`
  True if this StandardWrapper is for the JspServlet
  `protected ObjectName`
  `jspMonitorON`
  The ObjectName of the JSP monitoring mbean
  `protected int`
  `loadOnStartup`
  The load-on-startup order value (negative value means load on first call) for this servlet.
  `protected long`
  `loadTime`
  `protected final ArrayList<String>`
  `mappings`
  Mappings associated with the wrapper.
  `protected MultipartConfigElement`
  `multipartConfigElement`
  Multipart config
  `protected MBeanNotificationInfo[]`
  `notificationInfo`
  `protected HashMap<String,String>`
  `parameters`
  The initialization parameters for this servlet, keyed by parameter name.
  `protected HashMap<String,String>`
  `references`
  The security role references for this servlet, keyed by role name used in the servlet.
  `protected String`
  `runAs`
  The run-as identity for this servlet.
  `protected long`
  `sequenceNumber`
  The notification sequence number.
  `protected String`
  `servletClass`
  The fully qualified servlet class name for this servlet.
  `protected boolean`
  `swallowOutput`
  Should we swallow System.out
  `protected long`
  `unloadDelay`
  Wait time for servlet unload in ms.
  `protected boolean`
  `unloading`
  Are we unloading our servlet instance at the moment?

  ### Fields inherited from class ContainerBase

  `accessLog, backgroundProcessorDelay, backgroundProcessorFuture, children, cluster, listeners, logger, logName, monitorFuture, name, parent, parentClassLoader, pipeline, sm, startChildren, startStopExecutor, support`

  ### Fields inherited from interface Container

  `ADD_CHILD_EVENT, ADD_VALVE_EVENT, REMOVE_CHILD_EVENT, REMOVE_VALVE_EVENT`

  ### Fields inherited from interface 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`

  ### Fields inherited from interface Wrapper

  `ADD_MAPPING_EVENT, REMOVE_MAPPING_EVENT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StandardWrapper()`
  Create a new StandardWrapper component with the default basic Valve.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addChild(Container child)`
  Refuse to add a child Container, because Wrappers are the lowest level of the Container hierarchy.
  `void`
  `addInitParameter(String name, String value)`
  Add a new servlet initialization parameter for this servlet.
  `void`
  `addMapping(String mapping)`
  Add a mapping associated with the Wrapper.
  `void`
  `addNotificationListener(NotificationListener listener, NotificationFilter filter, Object object)`
  `void`
  `addSecurityReference(String name, String link)`
  Add a new security role reference record to the set of records for this servlet.
  `Servlet`
  `allocate()`
  Allocate an initialized instance of this Servlet that is ready to have its `service()` method called.
  `void`
  `backgroundProcess()`
  Execute a periodic task, such as reloading, etc.
  `void`
  `deallocate(Servlet servlet)`
  Decrement the allocation count for the servlet instance.
  `String`
  `findInitParameter(String name)`
  `String[]`
  `findInitParameters()`
  `String[]`
  `findMappings()`
  `String`
  `findSecurityReference(String name)`
  `String[]`
  `findSecurityReferences()`
  `protected Method[]`
  `getAllDeclaredMethods(Class<?> c)`
  `long`
  `getAvailable()`
  `int`
  `getClassLoadTime()`
  `int`
  `getCountAllocated()`
  `long`
  `getErrorCount()`
  Returns the number of requests processed by the wrapper that resulted in an error.
  `String`
  `getInitParameter(String name)`
  Returns a `String` containing the value of the named initialization parameter, or `null` if the parameter does not exist.
  `Enumeration<String>`
  `getInitParameterNames()`
  Returns the names of the servlet's initialization parameters as an `Enumeration` of `String` objects, or an empty `Enumeration` if the servlet has no initialization parameters.
  `int`
  `getLoadOnStartup()`
  `String`
  `getLoadOnStartupString()`
  `long`
  `getLoadTime()`
  `long`
  `getMaxTime()`
  `long`
  `getMinTime()`
  `MultipartConfigElement`
  `getMultipartConfigElement()`
  `MBeanNotificationInfo[]`
  `getNotificationInfo()`
  `protected String`
  `getObjectNameKeyProperties()`
  Allow subclasses to specify the key properties component of the `ObjectName` that will be used to register this component.
  `long`
  `getProcessingTime()`
  `long`
  `getRequestCount()`
  Returns the number of requests processed by the wrapper.
  `static Throwable`
  `getRootCause(ServletException e)`
  Extract the root cause from a servlet exception.
  `String`
  `getRunAs()`
  `Servlet`
  `getServlet()`
  `String`
  `getServletClass()`
  `ServletContext`
  `getServletContext()`
  Returns a reference to the `ServletContext` in which the caller is executing.
  `String[]`
  `getServletMethods()`
  Gets the names of the methods supported by the underlying servlet.
  `String`
  `getServletName()`
  Returns the name of this servlet instance.
  `void`
  `incrementErrorCount()`
  Increment the error count used for monitoring.
  `boolean`
  `isAsyncSupported()`
  Does the associated Servlet support async processing?
  `boolean`
  `isEnabled()`
  Is the associated Servlet enabled?
  `boolean`
  `isOverridable()`
  Is the Servlet overridable by a ServletContainerInitializer?
  `boolean`
  `isUnavailable()`
  `void`
  `load()`
  Load and initialize an instance of this Servlet, if there is not already at least one initialized instance.
  `Servlet`
  `loadServlet()`
  Load and initialize an instance of this servlet, if there is not already an initialized instance.
  `void`
  `removeInitParameter(String name)`
  Remove the specified initialization parameter from this Servlet.
  `void`
  `removeMapping(String mapping)`
  Remove a mapping associated with the wrapper.
  `void`
  `removeNotificationListener(NotificationListener listener)`
  `void`
  `removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object object)`
  `void`
  `removeSecurityReference(String name)`
  Remove any security role reference for the specified role name.
  `void`
  `setAsyncSupported(boolean asyncSupported)`
  Set the async support for the associated Servlet.
  `void`
  `setAvailable(long available)`
  Set the available date/time for this servlet, in milliseconds since the epoch.
  `void`
  `setEnabled(boolean enabled)`
  Sets the enabled attribute for the associated servlet.
  `void`
  `setLoadOnStartup(int value)`
  Set the load-on-startup order value (negative value means load on first call).
  `void`
  `setLoadOnStartupString(String value)`
  Set the load-on-startup order value from a (possibly null) string.
  `void`
  `setMultipartConfigElement(MultipartConfigElement multipartConfigElement)`
  Set the multipart configuration for the associated Servlet.
  `void`
  `setOverridable(boolean overridable)`
  Sets the overridable attribute for this Servlet.
  `void`
  `setParent(Container container)`
  Set the parent Container of this Wrapper, but only if it is a Context.
  `void`
  `setRunAs(String runAs)`
  Set the run-as identity for this servlet.
  `void`
  `setServlet(Servlet servlet)`
  Set the associated Servlet instance
  `void`
  `setServletClass(String servletClass)`
  Set the fully qualified servlet class name for this servlet.
  `void`
  `setServletName(String name)`
  Set the name of this servlet.
  `protected void`
  `startInternal()`
  Start this component and implement the requirements of `LifecycleBase.startInternal()`.
  `protected void`
  `stopInternal()`
  Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.
  `void`
  `unavailable(UnavailableException unavailable)`
  Process an UnavailableException, marking this Servlet as unavailable for the specified amount of time.
  `void`
  `unload()`
  Unload all initialized instances of this servlet, after calling the `destroy()` method for each instance.

  ### Methods inherited from class ContainerBase

  `addContainerListener, addPropertyChangeListener, addValve, destroyInternal, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getCatalinaBase, getCatalinaHome, getChildren, getCluster, getClusterInternal, getDomainInternal, getLogger, getLogName, getMBeanKeyProperties, getName, getParent, getParentClassLoader, getPipeline, getRealm, getRealmInternal, getStartChildren, getStartStopThreads, logAccess, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setName, setParentClassLoader, setRealm, setStartChildren, setStartStopThreads, threadStart, threadStop, toString`

  ### Methods inherited from class LifecycleMBeanBase

  `getDomain, getObjectName, initInternal, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister`

  ### Methods inherited from class LifecycleBase

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

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Container

  `addContainerListener, addPropertyChangeListener, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getCatalinaBase, getCatalinaHome, getCluster, getDomain, getLogger, getLogName, getMBeanKeyProperties, getName, getObjectName, getParent, getParentClassLoader, getPipeline, getRealm, getStartStopThreads, logAccess, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setName, setParentClassLoader, setRealm, setStartStopThreads`

  ### Methods inherited from interface Lifecycle

  `addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

- ## Field Details

  - ### DEFAULT_SERVLET_METHODS

    protected static final String[] DEFAULT_SERVLET_METHODS

  - ### available

    protected long available
    The date and time at which this servlet will become available (in milliseconds since the epoch), or zero if the servlet is available. If this value equals Long.MAX_VALUE, the unavailability of this servlet is considered permanent.

  - ### broadcaster

    protected final NotificationBroadcasterSupport broadcaster
    The broadcaster that sends EE notifications.

  - ### countAllocated

    protected final AtomicInteger countAllocated
    The count of allocations that are currently active.

  - ### facade

    protected final StandardWrapperFacade facade
    The facade associated with this wrapper.

  - ### instance

    protected volatile Servlet instance
    The (single) possibly uninitialized instance of this servlet.

  - ### instanceInitialized

    protected volatile boolean instanceInitialized
    Flag that indicates if this instance has been initialized

  - ### loadOnStartup

    protected int loadOnStartup
    The load-on-startup order value (negative value means load on first call) for this servlet.

  - ### mappings

    protected final ArrayList<String> mappings
    Mappings associated with the wrapper.

  - ### parameters

    protected HashMap<String,String> parameters
    The initialization parameters for this servlet, keyed by parameter name.

  - ### references

    protected HashMap<String,String> references
    The security role references for this servlet, keyed by role name used in the servlet. The corresponding value is the role name of the web application itself.

  - ### runAs

    protected String runAs
    The run-as identity for this servlet.

  - ### sequenceNumber

    protected long sequenceNumber
    The notification sequence number.

  - ### servletClass

    protected String servletClass
    The fully qualified servlet class name for this servlet.

  - ### unloading

    protected volatile boolean unloading
    Are we unloading our servlet instance at the moment?

  - ### unloadDelay

    protected long unloadDelay
    Wait time for servlet unload in ms.

  - ### isJspServlet

    protected boolean isJspServlet
    True if this StandardWrapper is for the JspServlet

  - ### jspMonitorON

    protected ObjectName jspMonitorON
    The ObjectName of the JSP monitoring mbean

  - ### swallowOutput

    protected boolean swallowOutput
    Should we swallow System.out

  - ### loadTime

    protected long loadTime

  - ### classLoadTime

    protected int classLoadTime

  - ### multipartConfigElement

    protected MultipartConfigElement multipartConfigElement
    Multipart config

  - ### asyncSupported

    protected boolean asyncSupported
    Async support

  - ### enabled

    protected boolean enabled
    Enabled

  - ### notificationInfo

    protected MBeanNotificationInfo[] notificationInfo

- ## Constructor Details

  - ### StandardWrapper

    public StandardWrapper()
    Create a new StandardWrapper component with the default basic Valve.

- ## Method Details

  - ### isOverridable

    public boolean isOverridable()
    Description copied from interface: `Wrapper`
    Is the Servlet overridable by a ServletContainerInitializer?
    Specified by:
      `isOverridable` in interface `Wrapper`
    Returns:
      `true` if the Servlet can be overridden in a ServletContainerInitializer

  - ### setOverridable

    public void setOverridable(boolean overridable)
    Description copied from interface: `Wrapper`
    Sets the overridable attribute for this Servlet.
    Specified by:
      `setOverridable` in interface `Wrapper`
    Parameters:
      `overridable` - the new value

  - ### getAvailable

    public long getAvailable()
    Specified by:
      `getAvailable` in interface `Wrapper`
    Returns:
      the available date/time for this servlet, in milliseconds since the epoch. If this date/time is in the future, any request for this servlet will return an SC_SERVICE_UNAVAILABLE error. If it is zero, the servlet is currently available. A value equal to Long.MAX_VALUE is considered to mean that unavailability is permanent.

  - ### setAvailable

    public void setAvailable(long available)
    Description copied from interface: `Wrapper`
    Set the available date/time for this servlet, in milliseconds since the epoch. If this date/time is in the future, any request for this servlet will return an SC_SERVICE_UNAVAILABLE error. A value equal to Long.MAX_VALUE is considered to mean that unavailability is permanent.
    Specified by:
      `setAvailable` in interface `Wrapper`
    Parameters:
      `available` - The new available date/time

  - ### getCountAllocated

    public int getCountAllocated()
    Returns:
      the number of active allocations of this servlet.

  - ### getLoadOnStartup

    public int getLoadOnStartup()
    Specified by:
      `getLoadOnStartup` in interface `Wrapper`
    Returns:
      the load-on-startup order value (negative value means load on first call).

  - ### setLoadOnStartup

    public void setLoadOnStartup(int value)
    Description copied from interface: `Wrapper`
    Set the load-on-startup order value (negative value means load on first call).
    Specified by:
      `setLoadOnStartup` in interface `Wrapper`
    Parameters:
      `value` - New load-on-startup value

  - ### setLoadOnStartupString

    public void setLoadOnStartupString(String value)
    Set the load-on-startup order value from a (possibly null) string. Per the specification, any missing or non-numeric value is converted to a zero, so that this servlet will still be loaded at startup time, but in an arbitrary order.
    Parameters:
      `value` - New load-on-startup value

  - ### getLoadOnStartupString

    public String getLoadOnStartupString()
    Returns:
      the load-on-startup value that was parsed

  - ### setParent

    public void setParent(Container container)
    Set the parent Container of this Wrapper, but only if it is a Context.
    Specified by:
      `setParent` in interface `Container`
    Overrides:
      `setParent` in class `ContainerBase`
    Parameters:
      `container` - Proposed parent Container

  - ### getRunAs

    public String getRunAs()
    Specified by:
      `getRunAs` in interface `Wrapper`
    Returns:
      the run-as identity for this servlet.

  - ### setRunAs

    public void setRunAs(String runAs)
    Description copied from interface: `Wrapper`
    Set the run-as identity for this servlet.
    Specified by:
      `setRunAs` in interface `Wrapper`
    Parameters:
      `runAs` - New run-as identity value

  - ### getServletClass

    public String getServletClass()
    Specified by:
      `getServletClass` in interface `Wrapper`
    Returns:
      the fully qualified servlet class name for this servlet.

  - ### setServletClass

    public void setServletClass(String servletClass)
    Description copied from interface: `Wrapper`
    Set the fully qualified servlet class name for this servlet.
    Specified by:
      `setServletClass` in interface `Wrapper`
    Parameters:
      `servletClass` - Servlet class name

  - ### setServletName

    public void setServletName(String name)
    Set the name of this servlet. This is an alias for the normal `Container.setName()` method, and complements the `getServletName()` method required by the `ServletConfig` interface.
    Parameters:
      `name` - The new name of this servlet

  - ### isUnavailable

    public boolean isUnavailable()
    Specified by:
      `isUnavailable` in interface `Wrapper`
    Returns:
      `true` if this Servlet is currently unavailable.

  - ### getServletMethods

    public String[] getServletMethods() throws ServletException
    Description copied from interface: `Wrapper`
    Gets the names of the methods supported by the underlying servlet. This is the same set of methods included in the Allow response header in response to an OPTIONS request method processed by the underlying servlet.
    Specified by:
      `getServletMethods` in interface `Wrapper`
    Returns:
      Array of names of the methods supported by the underlying servlet
    Throws:
      `ServletException` - If the target servlet cannot be loaded

  - ### getServlet

    public Servlet getServlet()
    Specified by:
      `getServlet` in interface `Wrapper`
    Returns:
      the associated Servlet instance.

  - ### setServlet

    public void setServlet(Servlet servlet)
    Description copied from interface: `Wrapper`
    Set the associated Servlet instance
    Specified by:
      `setServlet` in interface `Wrapper`
    Parameters:
      `servlet` - The associated Servlet

  - ### backgroundProcess

    public void backgroundProcess()
    Description copied from interface: `Container`
    Execute a periodic task, such as reloading, etc. This method will be invoked inside the classloading context of this container. Unexpected throwables will be caught and logged.
    Specified by:
      `backgroundProcess` in interface `Container`
    Overrides:
      `backgroundProcess` in class `ContainerBase`

  - ### getRootCause

    public static Throwable getRootCause(ServletException e)
    Extract the root cause from a servlet exception.
    Parameters:
      `e` - The servlet exception
    Returns:
      the root cause of the Servlet exception

  - ### addChild

    public void addChild(Container child)
    Refuse to add a child Container, because Wrappers are the lowest level of the Container hierarchy.
    Specified by:
      `addChild` in interface `Container`
    Overrides:
      `addChild` in class `ContainerBase`
    Parameters:
      `child` - Child container to be added

  - ### addInitParameter

    public void addInitParameter(String name, String value)
    Description copied from interface: `Wrapper`
    Add a new servlet initialization parameter for this servlet.
    Specified by:
      `addInitParameter` in interface `Wrapper`
    Parameters:
      `name` - Name of this initialization parameter to add
      `value` - Value of this initialization parameter to add

  - ### addMapping

    public void addMapping(String mapping)
    Description copied from interface: `Wrapper`
    Add a mapping associated with the Wrapper.
    Specified by:
      `addMapping` in interface `Wrapper`
    Parameters:
      `mapping` - The new wrapper mapping

  - ### addSecurityReference

    public void addSecurityReference(String name, String link)
    Description copied from interface: `Wrapper`
    Add a new security role reference record to the set of records for this servlet.
    Specified by:
      `addSecurityReference` in interface `Wrapper`
    Parameters:
      `name` - Role name used within this servlet
      `link` - Role name used within the web application

  - ### allocate

    public Servlet allocate() throws ServletException
    Description copied from interface: `Wrapper`
    Allocate an initialized instance of this Servlet that is ready to have its `service()` method called. The previously initialized instance may be returned immediately.
    Specified by:
      `allocate` in interface `Wrapper`
    Returns:
      a new Servlet instance
    Throws:
      `ServletException` - if the Servlet init() method threw an exception
      `ServletException` - if a loading error occurs

  - ### deallocate

    public void deallocate(Servlet servlet) throws ServletException
    Description copied from interface: `Wrapper`
    Decrement the allocation count for the servlet instance.
    Specified by:
      `deallocate` in interface `Wrapper`
    Parameters:
      `servlet` - The servlet to be returned
    Throws:
      `ServletException` - if a deallocation error occurs

  - ### findInitParameter

    public String findInitParameter(String name)
    Specified by:
      `findInitParameter` in interface `Wrapper`
    Parameters:
      `name` - Name of the requested initialization parameter
    Returns:
      the value for the specified initialization parameter name, if any; otherwise return `null`.

  - ### findInitParameters

    public String[] findInitParameters()
    Specified by:
      `findInitParameters` in interface `Wrapper`
    Returns:
      the names of all defined initialization parameters for this servlet.

  - ### findMappings

    public String[] findMappings()
    Specified by:
      `findMappings` in interface `Wrapper`
    Returns:
      the mappings associated with this wrapper.

  - ### findSecurityReference

    public String findSecurityReference(String name)
    Specified by:
      `findSecurityReference` in interface `Wrapper`
    Parameters:
      `name` - Security role reference used within this servlet
    Returns:
      the security role link for the specified security role reference name, if any; otherwise return `null`.

  - ### findSecurityReferences

    public String[] findSecurityReferences()
    Specified by:
      `findSecurityReferences` in interface `Wrapper`
    Returns:
      the array of security role reference names associated with this servlet, if any; otherwise return a zero-length array.

  - ### load

    public void load() throws ServletException
    Load and initialize an instance of this Servlet, if there is not already at least one initialized instance. This can be used, for example, to load Servlets that are marked in the deployment descriptor to be loaded at server startup time.

    IMPLEMENTATION NOTE: Servlets whose classnames begin with `org.apache.catalina.` (so-called "container" servlets) are loaded by the same classloader that loaded this class, rather than the classloader for the current web application. This gives such classes access to Catalina internals, which are prevented for classes loaded for web applications.

    Specified by:
      `load` in interface `Wrapper`
    Throws:
      `ServletException` - if the Servlet init() method threw an exception or if some other loading problem occurs

  - ### loadServlet

    public Servlet loadServlet() throws ServletException
    Load and initialize an instance of this servlet, if there is not already an initialized instance. This can be used, for example, to load servlets that are marked in the deployment descriptor to be loaded at server startup time.
    Returns:
      the loaded Servlet instance
    Throws:
      `ServletException` - for a Servlet load error

  - ### removeInitParameter

    public void removeInitParameter(String name)
    Description copied from interface: `Wrapper`
    Remove the specified initialization parameter from this Servlet.
    Specified by:
      `removeInitParameter` in interface `Wrapper`
    Parameters:
      `name` - Name of the initialization parameter to remove

  - ### removeMapping

    public void removeMapping(String mapping)
    Description copied from interface: `Wrapper`
    Remove a mapping associated with the wrapper.
    Specified by:
      `removeMapping` in interface `Wrapper`
    Parameters:
      `mapping` - The pattern to remove

  - ### removeSecurityReference

    public void removeSecurityReference(String name)
    Description copied from interface: `Wrapper`
    Remove any security role reference for the specified role name.
    Specified by:
      `removeSecurityReference` in interface `Wrapper`
    Parameters:
      `name` - Security role used within this servlet to be removed

  - ### unavailable

    public void unavailable(UnavailableException unavailable)
    Description copied from interface: `Wrapper`
    Process an UnavailableException, marking this Servlet as unavailable for the specified amount of time.
    Specified by:
      `unavailable` in interface `Wrapper`
    Parameters:
      `unavailable` - The exception that occurred, or `null` to mark this Servlet as permanently unavailable

  - ### unload

    public void unload() throws ServletException
    Description copied from interface: `Wrapper`
    Unload all initialized instances of this servlet, after calling the `destroy()` method for each instance. This can be used, for example, prior to shutting down the entire servlet engine, or prior to reloading all of the classes from the Loader associated with our Loader's repository.
    Specified by:
      `unload` in interface `Wrapper`
    Throws:
      `ServletException` - if an unload error occurs

  - ### getInitParameter

    public String getInitParameter(String name)
    Description copied from interface: `jakarta.servlet.ServletConfig`
    Returns a `String` containing the value of the named initialization parameter, or `null` if the parameter does not exist.
    Specified by:
      `getInitParameter` in interface `ServletConfig`
    Parameters:
      `name` - a `String` specifying the name of the initialization parameter
    Returns:
      a `String` containing the value of the initialization parameter

  - ### getInitParameterNames

    public Enumeration<String> getInitParameterNames()
    Description copied from interface: `jakarta.servlet.ServletConfig`
    Returns the names of the servlet's initialization parameters as an `Enumeration` of `String` objects, or an empty `Enumeration` if the servlet has no initialization parameters.
    Specified by:
      `getInitParameterNames` in interface `ServletConfig`
    Returns:
      an `Enumeration` of `String` objects containing the names of the servlet's initialization parameters

  - ### getServletContext

    public ServletContext getServletContext()
    Description copied from interface: `jakarta.servlet.ServletConfig`
    Returns a reference to the `ServletContext` in which the caller is executing.
    Specified by:
      `getServletContext` in interface `ServletConfig`
    Returns:
      a `ServletContext` object, used by the caller to interact with its servlet container
    See Also:
      - `ServletContext`

  - ### getServletName

    public String getServletName()
    Description copied from interface: `jakarta.servlet.ServletConfig`
    Returns the name of this servlet instance. The name may be provided via server administration, assigned in the web application deployment descriptor, or for an unregistered (and thus unnamed) servlet instance it will be the servlet's class name.
    Specified by:
      `getServletName` in interface `ServletConfig`
    Returns:
      the name of the servlet instance

  - ### getProcessingTime

    public long getProcessingTime()

  - ### getMaxTime

    public long getMaxTime()

  - ### getMinTime

    public long getMinTime()

  - ### getRequestCount

    public long getRequestCount()
    Returns the number of requests processed by the wrapper.
    Returns:
      the number of requests processed by the wrapper.

  - ### getErrorCount

    public long getErrorCount()
    Returns the number of requests processed by the wrapper that resulted in an error.
    Returns:
      the number of requests processed by the wrapper that resulted in an error.

  - ### incrementErrorCount

    public void incrementErrorCount()
    Increment the error count used for monitoring.
    Specified by:
      `incrementErrorCount` in interface `Wrapper`

  - ### getLoadTime

    public long getLoadTime()

  - ### getClassLoadTime

    public int getClassLoadTime()

  - ### getMultipartConfigElement

    public MultipartConfigElement getMultipartConfigElement()
    Specified by:
      `getMultipartConfigElement` in interface `Wrapper`
    Returns:
      the multipart configuration for the associated Servlet. If no multipart configuration has been defined, then `null` will be returned.

  - ### setMultipartConfigElement

    public void setMultipartConfigElement(MultipartConfigElement multipartConfigElement)
    Description copied from interface: `Wrapper`
    Set the multipart configuration for the associated Servlet. To clear the multipart configuration specify `null` as the new value.
    Specified by:
      `setMultipartConfigElement` in interface `Wrapper`
    Parameters:
      `multipartConfigElement` - The configuration associated with the Servlet

  - ### isAsyncSupported

    public boolean isAsyncSupported()
    Description copied from interface: `Wrapper`
    Does the associated Servlet support async processing? Defaults to `false`.
    Specified by:
      `isAsyncSupported` in interface `Wrapper`
    Returns:
      `true` if the Servlet supports async

  - ### setAsyncSupported

    public void setAsyncSupported(boolean asyncSupported)
    Description copied from interface: `Wrapper`
    Set the async support for the associated Servlet.
    Specified by:
      `setAsyncSupported` in interface `Wrapper`
    Parameters:
      `asyncSupported` - the new value

  - ### isEnabled

    public boolean isEnabled()
    Description copied from interface: `Wrapper`
    Is the associated Servlet enabled? Defaults to `true`.
    Specified by:
      `isEnabled` in interface `Wrapper`
    Returns:
      `true` if the Servlet is enabled

  - ### setEnabled

    public void setEnabled(boolean enabled)
    Description copied from interface: `Wrapper`
    Sets the enabled attribute for the associated servlet.
    Specified by:
      `setEnabled` in interface `Wrapper`
    Parameters:
      `enabled` - the new value

  - ### getAllDeclaredMethods

    protected Method[] getAllDeclaredMethods(Class<?> c)

  - ### startInternal

    protected void startInternal() throws LifecycleException
    Start this component and implement the requirements of `LifecycleBase.startInternal()`.
    Overrides:
      `startInternal` in class `ContainerBase`
    Throws:
      `LifecycleException` - if this component detects a fatal error that prevents this component from being used

  - ### stopInternal

    protected void stopInternal() throws LifecycleException
    Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.
    Overrides:
      `stopInternal` in class `ContainerBase`
    Throws:
      `LifecycleException` - if this component detects a fatal error that prevents this component from being used

  - ### getObjectNameKeyProperties

    protected String getObjectNameKeyProperties()
    Description copied from class: `LifecycleMBeanBase`
    Allow subclasses to specify the key properties component of the `ObjectName` that will be used to register this component.
    Specified by:
      `getObjectNameKeyProperties` in class `LifecycleMBeanBase`
    Returns:
      The string representation of the key properties component of the desired `ObjectName`

  - ### removeNotificationListener

    public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object object) throws ListenerNotFoundException
    Specified by:
      `removeNotificationListener` in interface `NotificationEmitter`
    Throws:
      `ListenerNotFoundException`

  - ### getNotificationInfo

    public MBeanNotificationInfo[] getNotificationInfo()
    Specified by:
      `getNotificationInfo` in interface `NotificationBroadcaster`

  - ### addNotificationListener

    public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object object) throws IllegalArgumentException
    Specified by:
      `addNotificationListener` in interface `NotificationBroadcaster`
    Throws:
      `IllegalArgumentException`

  - ### removeNotificationListener

    public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
    Specified by:
      `removeNotificationListener` in interface `NotificationBroadcaster`
    Throws:
      `ListenerNotFoundException`